@tanstack/router-plugin 1.48.6 → 1.51.0

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.
@@ -12,8 +12,10 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
12
12
  addExtensions: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
13
13
  disableLogging: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
14
14
  disableManifestGeneration: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
15
+ apiBase: z.ZodDefault<z.ZodOptional<z.ZodString>>;
15
16
  routeTreeFileHeader: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
16
17
  routeTreeFileFooter: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
18
+ autoCodeSplitting: z.ZodOptional<z.ZodBoolean>;
17
19
  experimental: z.ZodOptional<z.ZodObject<{
18
20
  enableCodeSplitting: z.ZodOptional<z.ZodBoolean>;
19
21
  }, "strip", z.ZodTypeAny, {
@@ -33,11 +35,13 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
33
35
  addExtensions: boolean;
34
36
  disableLogging: boolean;
35
37
  disableManifestGeneration: boolean;
38
+ apiBase: string;
36
39
  routeTreeFileHeader: string[];
37
40
  routeTreeFileFooter: string[];
38
41
  enableRouteGeneration?: boolean | undefined;
39
42
  routeFilePrefix?: string | undefined;
40
43
  routeFileIgnorePattern?: string | undefined;
44
+ autoCodeSplitting?: boolean | undefined;
41
45
  experimental?: {
42
46
  enableCodeSplitting?: boolean | undefined;
43
47
  } | undefined;
@@ -54,8 +58,10 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
54
58
  addExtensions?: boolean | undefined;
55
59
  disableLogging?: boolean | undefined;
56
60
  disableManifestGeneration?: boolean | undefined;
61
+ apiBase?: string | undefined;
57
62
  routeTreeFileHeader?: string[] | undefined;
58
63
  routeTreeFileFooter?: string[] | undefined;
64
+ autoCodeSplitting?: boolean | undefined;
59
65
  experimental?: {
60
66
  enableCodeSplitting?: boolean | undefined;
61
67
  } | undefined;
@@ -70,11 +76,13 @@ export declare const getConfig: (inlineConfig: Partial<Config>, root: string) =>
70
76
  addExtensions: boolean;
71
77
  disableLogging: boolean;
72
78
  disableManifestGeneration: boolean;
79
+ apiBase: string;
73
80
  routeTreeFileHeader: string[];
74
81
  routeTreeFileFooter: string[];
75
82
  enableRouteGeneration?: boolean | undefined;
76
83
  routeFilePrefix?: string | undefined;
77
84
  routeFileIgnorePattern?: string | undefined;
85
+ autoCodeSplitting?: boolean | undefined;
78
86
  experimental?: {
79
87
  enableCodeSplitting?: boolean | undefined;
80
88
  } | undefined;
@@ -73,8 +73,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
73
73
  name: "router-code-splitter-plugin",
74
74
  enforce: "pre",
75
75
  resolveId(source) {
76
- var _a;
77
- if (!((_a = userConfig.experimental) == null ? void 0 : _a.enableCodeSplitting)) {
76
+ if (!userConfig.autoCodeSplitting) {
78
77
  return null;
79
78
  }
80
79
  if (source.startsWith(constants.splitPrefix + ":")) {
@@ -83,8 +82,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
83
82
  return null;
84
83
  },
85
84
  transform(code, id) {
86
- var _a;
87
- if (!((_a = userConfig.experimental) == null ? void 0 : _a.enableCodeSplitting)) {
85
+ if (!userConfig.autoCodeSplitting) {
88
86
  return null;
89
87
  }
90
88
  const url = node_url.pathToFileURL(id);
@@ -106,8 +104,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
106
104
  return null;
107
105
  },
108
106
  transformInclude(transformId) {
109
- var _a;
110
- if (!((_a = userConfig.experimental) == null ? void 0 : _a.enableCodeSplitting)) {
107
+ if (!userConfig.autoCodeSplitting) {
111
108
  return void 0;
112
109
  }
113
110
  let id = transformId;
@@ -122,7 +119,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
122
119
  vite: {
123
120
  configResolved(config$1) {
124
121
  ROOT = config$1.root;
125
- userConfig = config.getConfig(options, ROOT);
122
+ userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(config.getConfig(options, ROOT));
126
123
  }
127
124
  },
128
125
  rspack(compiler) {
@@ -140,10 +137,9 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
140
137
  }
141
138
  );
142
139
  });
143
- userConfig = config.getConfig(options, ROOT);
140
+ userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(config.getConfig(options, ROOT));
144
141
  },
145
142
  webpack(compiler) {
146
- var _a;
147
143
  ROOT = process.cwd();
148
144
  compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {
149
145
  self.normalModuleFactory.hooks.beforeResolve.tap(
@@ -158,9 +154,9 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
158
154
  }
159
155
  );
160
156
  });
161
- userConfig = config.getConfig(options, ROOT);
162
- if (((_a = userConfig.experimental) == null ? void 0 : _a.enableCodeSplitting) && compiler.options.mode === "production") {
163
- compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {
157
+ userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(config.getConfig(options, ROOT));
158
+ if (userConfig.autoCodeSplitting && compiler.options.mode === "production") {
159
+ compiler.hooks.done.tap(PLUGIN_NAME, () => {
164
160
  console.info("✅ " + PLUGIN_NAME + ": code-splitting done!");
165
161
  setTimeout(() => {
166
162
  process.exit(0);
@@ -170,5 +166,19 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
170
166
  }
171
167
  };
172
168
  };
169
+ function CHECK_USER_FLAGS_TO_BE_CHANGED(config2) {
170
+ var _a;
171
+ if (typeof ((_a = config2.experimental) == null ? void 0 : _a.enableCodeSplitting) !== "undefined") {
172
+ const message = `
173
+ ------
174
+ ⚠️ ⚠️ ⚠️
175
+ ERROR: The "experimental.enableCodeSplitting" flag has been made stable and is now "autoCodeSplitting". Please update your configuration file to use "autoCodeSplitting" instead of "experimental.enableCodeSplitting".
176
+ ------
177
+ `;
178
+ console.error(message);
179
+ throw new Error(message);
180
+ }
181
+ return config2;
182
+ }
173
183
  exports.unpluginRouterCodeSplitterFactory = unpluginRouterCodeSplitterFactory;
174
184
  //# sourceMappingURL=router-code-splitter-plugin.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"router-code-splitter-plugin.cjs","sources":["../../../src/core/router-code-splitter-plugin.ts"],"sourcesContent":["import { isAbsolute, join } from 'node:path'\nimport { fileURLToPath, pathToFileURL } from 'node:url'\n\nimport { getConfig } from './config'\nimport {\n compileCodeSplitReferenceRoute,\n compileCodeSplitVirtualRoute,\n} from './code-splitter/compilers'\nimport { splitPrefix } from './constants'\n\nimport type { Config } from './config'\nimport type { UnpluginContextMeta, UnpluginFactory } from 'unplugin'\n\nfunction capitalizeFirst(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nfunction fileIsInRoutesDirectory(filePath: string, routesDirectory: string) {\n const routesDirectoryPath = isAbsolute(routesDirectory)\n ? routesDirectory\n : join(process.cwd(), routesDirectory)\n\n return filePath.startsWith(routesDirectoryPath)\n}\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(externalPlugin: BannedBeforeExternalPlugin, framework: string) {\n super(`We detected that the '${externalPlugin.pkg}' was passed before '@tanstack/router-plugin'. Please make sure that '@tanstack/router-plugin' is passed before '${externalPlugin.pkg}' and try again: \ne.g.\nplugins: [\n TanStackRouter${capitalizeFirst(framework)}(), // Place this before ${externalPlugin.usage}\n ${externalPlugin.usage},\n]\n`)\n }\n}\n\nconst PLUGIN_NAME = 'unplugin:router-code-splitter'\nconst JoinedSplitPrefix = splitPrefix + ':'\n\nexport const unpluginRouterCodeSplitterFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, { framework }) => {\n const debug = Boolean(process.env.TSR_VITE_DEBUG)\n\n let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n const handleSplittingFile = (code: string, id: string) => {\n if (debug) console.info('Splitting route: ', id)\n\n const compiledVirtualRoute = compileCodeSplitVirtualRoute({\n code,\n root: ROOT,\n filename: id,\n })\n\n if (debug) console.info('')\n if (debug) console.info('Split Output')\n if (debug) console.info('')\n if (debug) console.info(compiledVirtualRoute.code)\n if (debug) console.info('')\n if (debug) console.info('')\n if (debug) console.info('')\n\n return compiledVirtualRoute\n }\n\n const handleCompilingFile = (code: string, id: string) => {\n if (debug) console.info('Handling createRoute: ', id)\n\n const compiledReferenceRoute = compileCodeSplitReferenceRoute({\n code,\n root: ROOT,\n filename: id,\n })\n\n if (debug) console.info('')\n if (debug) console.info('Compiled Output')\n if (debug) console.info('')\n if (debug) console.info(compiledReferenceRoute.code)\n if (debug) console.info('')\n if (debug) console.info('')\n if (debug) console.info('')\n\n return compiledReferenceRoute\n }\n\n return {\n name: 'router-code-splitter-plugin',\n enforce: 'pre',\n\n resolveId(source) {\n if (!userConfig.experimental?.enableCodeSplitting) {\n return null\n }\n\n if (source.startsWith(splitPrefix + ':')) {\n return source.replace(splitPrefix + ':', '')\n }\n return null\n },\n\n transform(code, id) {\n if (!userConfig.experimental?.enableCodeSplitting) {\n return null\n }\n\n const url = pathToFileURL(id)\n url.searchParams.delete('v')\n id = fileURLToPath(url).replace(/\\\\/g, '/')\n\n if (id.includes(splitPrefix)) {\n return handleSplittingFile(code, id)\n } else if (\n fileIsInRoutesDirectory(id, userConfig.routesDirectory) &&\n (code.includes('createRoute(') || code.includes('createFileRoute('))\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 handleCompilingFile(code, id)\n }\n\n return null\n },\n\n transformInclude(transformId) {\n if (!userConfig.experimental?.enableCodeSplitting) {\n return undefined\n }\n\n let id = transformId\n\n if (id.startsWith(JoinedSplitPrefix)) {\n id = id.replace(JoinedSplitPrefix, '')\n }\n\n if (\n fileIsInRoutesDirectory(id, userConfig.routesDirectory) ||\n id.includes(splitPrefix)\n ) {\n return true\n }\n return false\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n userConfig = getConfig(options, ROOT)\n },\n },\n\n rspack(compiler) {\n ROOT = process.cwd()\n\n compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {\n self.normalModuleFactory.hooks.beforeResolve.tap(\n PLUGIN_NAME,\n (resolveData: { request: string }) => {\n if (resolveData.request.includes(JoinedSplitPrefix)) {\n resolveData.request = resolveData.request.replace(\n JoinedSplitPrefix,\n '',\n )\n }\n },\n )\n })\n\n userConfig = getConfig(options, ROOT)\n },\n\n webpack(compiler) {\n ROOT = process.cwd()\n\n compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {\n self.normalModuleFactory.hooks.beforeResolve.tap(\n PLUGIN_NAME,\n (resolveData: { request: string }) => {\n if (resolveData.request.includes(JoinedSplitPrefix)) {\n resolveData.request = resolveData.request.replace(\n JoinedSplitPrefix,\n '',\n )\n }\n },\n )\n })\n\n userConfig = getConfig(options, ROOT)\n\n if (\n userConfig.experimental?.enableCodeSplitting &&\n compiler.options.mode === 'production'\n ) {\n compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {\n console.info('✅ ' + PLUGIN_NAME + ': code-splitting done!')\n setTimeout(() => {\n process.exit(0)\n })\n })\n }\n },\n }\n}\n"],"names":["isAbsolute","join","splitPrefix","compileCodeSplitVirtualRoute","compileCodeSplitReferenceRoute","pathToFileURL","fileURLToPath","config","getConfig"],"mappings":"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"}
1
+ {"version":3,"file":"router-code-splitter-plugin.cjs","sources":["../../../src/core/router-code-splitter-plugin.ts"],"sourcesContent":["import { isAbsolute, join } from 'node:path'\nimport { fileURLToPath, pathToFileURL } from 'node:url'\n\nimport { getConfig } from './config'\nimport {\n compileCodeSplitReferenceRoute,\n compileCodeSplitVirtualRoute,\n} from './code-splitter/compilers'\nimport { splitPrefix } from './constants'\n\nimport type { Config } from './config'\nimport type { UnpluginContextMeta, UnpluginFactory } from 'unplugin'\n\nfunction capitalizeFirst(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nfunction fileIsInRoutesDirectory(filePath: string, routesDirectory: string) {\n const routesDirectoryPath = isAbsolute(routesDirectory)\n ? routesDirectory\n : join(process.cwd(), routesDirectory)\n\n return filePath.startsWith(routesDirectoryPath)\n}\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(externalPlugin: BannedBeforeExternalPlugin, framework: string) {\n super(`We detected that the '${externalPlugin.pkg}' was passed before '@tanstack/router-plugin'. Please make sure that '@tanstack/router-plugin' is passed before '${externalPlugin.pkg}' and try again: \ne.g.\nplugins: [\n TanStackRouter${capitalizeFirst(framework)}(), // Place this before ${externalPlugin.usage}\n ${externalPlugin.usage},\n]\n`)\n }\n}\n\nconst PLUGIN_NAME = 'unplugin:router-code-splitter'\nconst JoinedSplitPrefix = splitPrefix + ':'\n\nexport const unpluginRouterCodeSplitterFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, { framework }) => {\n const debug = Boolean(process.env.TSR_VITE_DEBUG)\n\n let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n const handleSplittingFile = (code: string, id: string) => {\n if (debug) console.info('Splitting route: ', id)\n\n const compiledVirtualRoute = compileCodeSplitVirtualRoute({\n code,\n root: ROOT,\n filename: id,\n })\n\n if (debug) console.info('')\n if (debug) console.info('Split Output')\n if (debug) console.info('')\n if (debug) console.info(compiledVirtualRoute.code)\n if (debug) console.info('')\n if (debug) console.info('')\n if (debug) console.info('')\n\n return compiledVirtualRoute\n }\n\n const handleCompilingFile = (code: string, id: string) => {\n if (debug) console.info('Handling createRoute: ', id)\n\n const compiledReferenceRoute = compileCodeSplitReferenceRoute({\n code,\n root: ROOT,\n filename: id,\n })\n\n if (debug) console.info('')\n if (debug) console.info('Compiled Output')\n if (debug) console.info('')\n if (debug) console.info(compiledReferenceRoute.code)\n if (debug) console.info('')\n if (debug) console.info('')\n if (debug) console.info('')\n\n return compiledReferenceRoute\n }\n\n return {\n name: 'router-code-splitter-plugin',\n enforce: 'pre',\n\n resolveId(source) {\n if (!userConfig.autoCodeSplitting) {\n return null\n }\n\n if (source.startsWith(splitPrefix + ':')) {\n return source.replace(splitPrefix + ':', '')\n }\n return null\n },\n\n transform(code, id) {\n if (!userConfig.autoCodeSplitting) {\n return null\n }\n\n const url = pathToFileURL(id)\n url.searchParams.delete('v')\n id = fileURLToPath(url).replace(/\\\\/g, '/')\n\n if (id.includes(splitPrefix)) {\n return handleSplittingFile(code, id)\n } else if (\n fileIsInRoutesDirectory(id, userConfig.routesDirectory) &&\n (code.includes('createRoute(') || code.includes('createFileRoute('))\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 handleCompilingFile(code, id)\n }\n\n return null\n },\n\n transformInclude(transformId) {\n if (!userConfig.autoCodeSplitting) {\n return undefined\n }\n\n let id = transformId\n\n if (id.startsWith(JoinedSplitPrefix)) {\n id = id.replace(JoinedSplitPrefix, '')\n }\n\n if (\n fileIsInRoutesDirectory(id, userConfig.routesDirectory) ||\n id.includes(splitPrefix)\n ) {\n return true\n }\n return false\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n\n userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(getConfig(options, ROOT))\n },\n },\n\n rspack(compiler) {\n ROOT = process.cwd()\n\n compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {\n self.normalModuleFactory.hooks.beforeResolve.tap(\n PLUGIN_NAME,\n (resolveData: { request: string }) => {\n if (resolveData.request.includes(JoinedSplitPrefix)) {\n resolveData.request = resolveData.request.replace(\n JoinedSplitPrefix,\n '',\n )\n }\n },\n )\n })\n\n userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(getConfig(options, ROOT))\n },\n\n webpack(compiler) {\n ROOT = process.cwd()\n\n compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {\n self.normalModuleFactory.hooks.beforeResolve.tap(\n PLUGIN_NAME,\n (resolveData: { request: string }) => {\n if (resolveData.request.includes(JoinedSplitPrefix)) {\n resolveData.request = resolveData.request.replace(\n JoinedSplitPrefix,\n '',\n )\n }\n },\n )\n })\n\n userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(getConfig(options, ROOT))\n\n if (\n userConfig.autoCodeSplitting &&\n compiler.options.mode === 'production'\n ) {\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\nfunction CHECK_USER_FLAGS_TO_BE_CHANGED(config: Config): Config {\n if (typeof config.experimental?.enableCodeSplitting !== 'undefined') {\n const message = `\n------\n⚠️ ⚠️ ⚠️\nERROR: The \"experimental.enableCodeSplitting\" flag has been made stable and is now \"autoCodeSplitting\". Please update your configuration file to use \"autoCodeSplitting\" instead of \"experimental.enableCodeSplitting\".\n------\n`\n console.error(message)\n throw new Error(message)\n }\n\n return config\n}\n"],"names":["isAbsolute","join","splitPrefix","compileCodeSplitVirtualRoute","compileCodeSplitReferenceRoute","pathToFileURL","fileURLToPath","config","getConfig"],"mappings":"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"}
@@ -23,11 +23,13 @@ declare const TanStackRouterGeneratorRspack: (options?: Partial<{
23
23
  addExtensions: boolean;
24
24
  disableLogging: boolean;
25
25
  disableManifestGeneration: boolean;
26
+ apiBase: string;
26
27
  routeTreeFileHeader: string[];
27
28
  routeTreeFileFooter: string[];
28
29
  enableRouteGeneration?: boolean | undefined;
29
30
  routeFilePrefix?: string | undefined;
30
31
  routeFileIgnorePattern?: string | undefined;
32
+ autoCodeSplitting?: boolean | undefined;
31
33
  experimental?: {
32
34
  enableCodeSplitting?: boolean | undefined;
33
35
  } | undefined;
@@ -55,11 +57,13 @@ declare const TanStackRouterCodeSplitterRspack: (options?: Partial<{
55
57
  addExtensions: boolean;
56
58
  disableLogging: boolean;
57
59
  disableManifestGeneration: boolean;
60
+ apiBase: string;
58
61
  routeTreeFileHeader: string[];
59
62
  routeTreeFileFooter: string[];
60
63
  enableRouteGeneration?: boolean | undefined;
61
64
  routeFilePrefix?: string | undefined;
62
65
  routeFileIgnorePattern?: string | undefined;
66
+ autoCodeSplitting?: boolean | undefined;
63
67
  experimental?: {
64
68
  enableCodeSplitting?: boolean | undefined;
65
69
  } | undefined;
@@ -87,11 +91,13 @@ declare const TanStackRouterRspack: (options?: Partial<{
87
91
  addExtensions: boolean;
88
92
  disableLogging: boolean;
89
93
  disableManifestGeneration: boolean;
94
+ apiBase: string;
90
95
  routeTreeFileHeader: string[];
91
96
  routeTreeFileFooter: string[];
92
97
  enableRouteGeneration?: boolean | undefined;
93
98
  routeFilePrefix?: string | undefined;
94
99
  routeFileIgnorePattern?: string | undefined;
100
+ autoCodeSplitting?: boolean | undefined;
95
101
  experimental?: {
96
102
  enableCodeSplitting?: boolean | undefined;
97
103
  } | undefined;
@@ -19,11 +19,13 @@ declare const TanStackRouterGeneratorVite: (options?: Partial<{
19
19
  addExtensions: boolean;
20
20
  disableLogging: boolean;
21
21
  disableManifestGeneration: boolean;
22
+ apiBase: string;
22
23
  routeTreeFileHeader: string[];
23
24
  routeTreeFileFooter: string[];
24
25
  enableRouteGeneration?: boolean | undefined;
25
26
  routeFilePrefix?: string | undefined;
26
27
  routeFileIgnorePattern?: string | undefined;
28
+ autoCodeSplitting?: boolean | undefined;
27
29
  experimental?: {
28
30
  enableCodeSplitting?: boolean | undefined;
29
31
  } | undefined;
@@ -47,11 +49,13 @@ declare const TanStackRouterCodeSplitterVite: (options?: Partial<{
47
49
  addExtensions: boolean;
48
50
  disableLogging: boolean;
49
51
  disableManifestGeneration: boolean;
52
+ apiBase: string;
50
53
  routeTreeFileHeader: string[];
51
54
  routeTreeFileFooter: string[];
52
55
  enableRouteGeneration?: boolean | undefined;
53
56
  routeFilePrefix?: string | undefined;
54
57
  routeFileIgnorePattern?: string | undefined;
58
+ autoCodeSplitting?: boolean | undefined;
55
59
  experimental?: {
56
60
  enableCodeSplitting?: boolean | undefined;
57
61
  } | undefined;
@@ -75,11 +79,13 @@ declare const TanStackRouterVite: (options?: Partial<{
75
79
  addExtensions: boolean;
76
80
  disableLogging: boolean;
77
81
  disableManifestGeneration: boolean;
82
+ apiBase: string;
78
83
  routeTreeFileHeader: string[];
79
84
  routeTreeFileFooter: string[];
80
85
  enableRouteGeneration?: boolean | undefined;
81
86
  routeFilePrefix?: string | undefined;
82
87
  routeFileIgnorePattern?: string | undefined;
88
+ autoCodeSplitting?: boolean | undefined;
83
89
  experimental?: {
84
90
  enableCodeSplitting?: boolean | undefined;
85
91
  } | undefined;
@@ -19,11 +19,13 @@ declare const TanStackRouterGeneratorWebpack: (options?: Partial<{
19
19
  addExtensions: boolean;
20
20
  disableLogging: boolean;
21
21
  disableManifestGeneration: boolean;
22
+ apiBase: string;
22
23
  routeTreeFileHeader: string[];
23
24
  routeTreeFileFooter: string[];
24
25
  enableRouteGeneration?: boolean | undefined;
25
26
  routeFilePrefix?: string | undefined;
26
27
  routeFileIgnorePattern?: string | undefined;
28
+ autoCodeSplitting?: boolean | undefined;
27
29
  experimental?: {
28
30
  enableCodeSplitting?: boolean | undefined;
29
31
  } | undefined;
@@ -47,11 +49,13 @@ declare const TanStackRouterCodeSplitterWebpack: (options?: Partial<{
47
49
  addExtensions: boolean;
48
50
  disableLogging: boolean;
49
51
  disableManifestGeneration: boolean;
52
+ apiBase: string;
50
53
  routeTreeFileHeader: string[];
51
54
  routeTreeFileFooter: string[];
52
55
  enableRouteGeneration?: boolean | undefined;
53
56
  routeFilePrefix?: string | undefined;
54
57
  routeFileIgnorePattern?: string | undefined;
58
+ autoCodeSplitting?: boolean | undefined;
55
59
  experimental?: {
56
60
  enableCodeSplitting?: boolean | undefined;
57
61
  } | undefined;
@@ -75,11 +79,13 @@ declare const TanStackRouterWebpack: (options?: Partial<{
75
79
  addExtensions: boolean;
76
80
  disableLogging: boolean;
77
81
  disableManifestGeneration: boolean;
82
+ apiBase: string;
78
83
  routeTreeFileHeader: string[];
79
84
  routeTreeFileFooter: string[];
80
85
  enableRouteGeneration?: boolean | undefined;
81
86
  routeFilePrefix?: string | undefined;
82
87
  routeFileIgnorePattern?: string | undefined;
88
+ autoCodeSplitting?: boolean | undefined;
83
89
  experimental?: {
84
90
  enableCodeSplitting?: boolean | undefined;
85
91
  } | undefined;
@@ -12,8 +12,10 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
12
12
  addExtensions: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
13
13
  disableLogging: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
14
14
  disableManifestGeneration: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
15
+ apiBase: z.ZodDefault<z.ZodOptional<z.ZodString>>;
15
16
  routeTreeFileHeader: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
16
17
  routeTreeFileFooter: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
18
+ autoCodeSplitting: z.ZodOptional<z.ZodBoolean>;
17
19
  experimental: z.ZodOptional<z.ZodObject<{
18
20
  enableCodeSplitting: z.ZodOptional<z.ZodBoolean>;
19
21
  }, "strip", z.ZodTypeAny, {
@@ -33,11 +35,13 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
33
35
  addExtensions: boolean;
34
36
  disableLogging: boolean;
35
37
  disableManifestGeneration: boolean;
38
+ apiBase: string;
36
39
  routeTreeFileHeader: string[];
37
40
  routeTreeFileFooter: string[];
38
41
  enableRouteGeneration?: boolean | undefined;
39
42
  routeFilePrefix?: string | undefined;
40
43
  routeFileIgnorePattern?: string | undefined;
44
+ autoCodeSplitting?: boolean | undefined;
41
45
  experimental?: {
42
46
  enableCodeSplitting?: boolean | undefined;
43
47
  } | undefined;
@@ -54,8 +58,10 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
54
58
  addExtensions?: boolean | undefined;
55
59
  disableLogging?: boolean | undefined;
56
60
  disableManifestGeneration?: boolean | undefined;
61
+ apiBase?: string | undefined;
57
62
  routeTreeFileHeader?: string[] | undefined;
58
63
  routeTreeFileFooter?: string[] | undefined;
64
+ autoCodeSplitting?: boolean | undefined;
59
65
  experimental?: {
60
66
  enableCodeSplitting?: boolean | undefined;
61
67
  } | undefined;
@@ -70,11 +76,13 @@ export declare const getConfig: (inlineConfig: Partial<Config>, root: string) =>
70
76
  addExtensions: boolean;
71
77
  disableLogging: boolean;
72
78
  disableManifestGeneration: boolean;
79
+ apiBase: string;
73
80
  routeTreeFileHeader: string[];
74
81
  routeTreeFileFooter: string[];
75
82
  enableRouteGeneration?: boolean | undefined;
76
83
  routeFilePrefix?: string | undefined;
77
84
  routeFileIgnorePattern?: string | undefined;
85
+ autoCodeSplitting?: boolean | undefined;
78
86
  experimental?: {
79
87
  enableCodeSplitting?: boolean | undefined;
80
88
  } | undefined;
@@ -71,8 +71,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
71
71
  name: "router-code-splitter-plugin",
72
72
  enforce: "pre",
73
73
  resolveId(source) {
74
- var _a;
75
- if (!((_a = userConfig.experimental) == null ? void 0 : _a.enableCodeSplitting)) {
74
+ if (!userConfig.autoCodeSplitting) {
76
75
  return null;
77
76
  }
78
77
  if (source.startsWith(splitPrefix + ":")) {
@@ -81,8 +80,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
81
80
  return null;
82
81
  },
83
82
  transform(code, id) {
84
- var _a;
85
- if (!((_a = userConfig.experimental) == null ? void 0 : _a.enableCodeSplitting)) {
83
+ if (!userConfig.autoCodeSplitting) {
86
84
  return null;
87
85
  }
88
86
  const url = pathToFileURL(id);
@@ -104,8 +102,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
104
102
  return null;
105
103
  },
106
104
  transformInclude(transformId) {
107
- var _a;
108
- if (!((_a = userConfig.experimental) == null ? void 0 : _a.enableCodeSplitting)) {
105
+ if (!userConfig.autoCodeSplitting) {
109
106
  return void 0;
110
107
  }
111
108
  let id = transformId;
@@ -120,7 +117,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
120
117
  vite: {
121
118
  configResolved(config) {
122
119
  ROOT = config.root;
123
- userConfig = getConfig(options, ROOT);
120
+ userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(getConfig(options, ROOT));
124
121
  }
125
122
  },
126
123
  rspack(compiler) {
@@ -138,10 +135,9 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
138
135
  }
139
136
  );
140
137
  });
141
- userConfig = getConfig(options, ROOT);
138
+ userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(getConfig(options, ROOT));
142
139
  },
143
140
  webpack(compiler) {
144
- var _a;
145
141
  ROOT = process.cwd();
146
142
  compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {
147
143
  self.normalModuleFactory.hooks.beforeResolve.tap(
@@ -156,9 +152,9 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
156
152
  }
157
153
  );
158
154
  });
159
- userConfig = getConfig(options, ROOT);
160
- if (((_a = userConfig.experimental) == null ? void 0 : _a.enableCodeSplitting) && compiler.options.mode === "production") {
161
- compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {
155
+ userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(getConfig(options, ROOT));
156
+ if (userConfig.autoCodeSplitting && compiler.options.mode === "production") {
157
+ compiler.hooks.done.tap(PLUGIN_NAME, () => {
162
158
  console.info("✅ " + PLUGIN_NAME + ": code-splitting done!");
163
159
  setTimeout(() => {
164
160
  process.exit(0);
@@ -168,6 +164,20 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
168
164
  }
169
165
  };
170
166
  };
167
+ function CHECK_USER_FLAGS_TO_BE_CHANGED(config) {
168
+ var _a;
169
+ if (typeof ((_a = config.experimental) == null ? void 0 : _a.enableCodeSplitting) !== "undefined") {
170
+ const message = `
171
+ ------
172
+ ⚠️ ⚠️ ⚠️
173
+ ERROR: The "experimental.enableCodeSplitting" flag has been made stable and is now "autoCodeSplitting". Please update your configuration file to use "autoCodeSplitting" instead of "experimental.enableCodeSplitting".
174
+ ------
175
+ `;
176
+ console.error(message);
177
+ throw new Error(message);
178
+ }
179
+ return config;
180
+ }
171
181
  export {
172
182
  unpluginRouterCodeSplitterFactory
173
183
  };
@@ -1 +1 @@
1
- {"version":3,"file":"router-code-splitter-plugin.js","sources":["../../../src/core/router-code-splitter-plugin.ts"],"sourcesContent":["import { isAbsolute, join } from 'node:path'\nimport { fileURLToPath, pathToFileURL } from 'node:url'\n\nimport { getConfig } from './config'\nimport {\n compileCodeSplitReferenceRoute,\n compileCodeSplitVirtualRoute,\n} from './code-splitter/compilers'\nimport { splitPrefix } from './constants'\n\nimport type { Config } from './config'\nimport type { UnpluginContextMeta, UnpluginFactory } from 'unplugin'\n\nfunction capitalizeFirst(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nfunction fileIsInRoutesDirectory(filePath: string, routesDirectory: string) {\n const routesDirectoryPath = isAbsolute(routesDirectory)\n ? routesDirectory\n : join(process.cwd(), routesDirectory)\n\n return filePath.startsWith(routesDirectoryPath)\n}\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(externalPlugin: BannedBeforeExternalPlugin, framework: string) {\n super(`We detected that the '${externalPlugin.pkg}' was passed before '@tanstack/router-plugin'. Please make sure that '@tanstack/router-plugin' is passed before '${externalPlugin.pkg}' and try again: \ne.g.\nplugins: [\n TanStackRouter${capitalizeFirst(framework)}(), // Place this before ${externalPlugin.usage}\n ${externalPlugin.usage},\n]\n`)\n }\n}\n\nconst PLUGIN_NAME = 'unplugin:router-code-splitter'\nconst JoinedSplitPrefix = splitPrefix + ':'\n\nexport const unpluginRouterCodeSplitterFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, { framework }) => {\n const debug = Boolean(process.env.TSR_VITE_DEBUG)\n\n let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n const handleSplittingFile = (code: string, id: string) => {\n if (debug) console.info('Splitting route: ', id)\n\n const compiledVirtualRoute = compileCodeSplitVirtualRoute({\n code,\n root: ROOT,\n filename: id,\n })\n\n if (debug) console.info('')\n if (debug) console.info('Split Output')\n if (debug) console.info('')\n if (debug) console.info(compiledVirtualRoute.code)\n if (debug) console.info('')\n if (debug) console.info('')\n if (debug) console.info('')\n\n return compiledVirtualRoute\n }\n\n const handleCompilingFile = (code: string, id: string) => {\n if (debug) console.info('Handling createRoute: ', id)\n\n const compiledReferenceRoute = compileCodeSplitReferenceRoute({\n code,\n root: ROOT,\n filename: id,\n })\n\n if (debug) console.info('')\n if (debug) console.info('Compiled Output')\n if (debug) console.info('')\n if (debug) console.info(compiledReferenceRoute.code)\n if (debug) console.info('')\n if (debug) console.info('')\n if (debug) console.info('')\n\n return compiledReferenceRoute\n }\n\n return {\n name: 'router-code-splitter-plugin',\n enforce: 'pre',\n\n resolveId(source) {\n if (!userConfig.experimental?.enableCodeSplitting) {\n return null\n }\n\n if (source.startsWith(splitPrefix + ':')) {\n return source.replace(splitPrefix + ':', '')\n }\n return null\n },\n\n transform(code, id) {\n if (!userConfig.experimental?.enableCodeSplitting) {\n return null\n }\n\n const url = pathToFileURL(id)\n url.searchParams.delete('v')\n id = fileURLToPath(url).replace(/\\\\/g, '/')\n\n if (id.includes(splitPrefix)) {\n return handleSplittingFile(code, id)\n } else if (\n fileIsInRoutesDirectory(id, userConfig.routesDirectory) &&\n (code.includes('createRoute(') || code.includes('createFileRoute('))\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 handleCompilingFile(code, id)\n }\n\n return null\n },\n\n transformInclude(transformId) {\n if (!userConfig.experimental?.enableCodeSplitting) {\n return undefined\n }\n\n let id = transformId\n\n if (id.startsWith(JoinedSplitPrefix)) {\n id = id.replace(JoinedSplitPrefix, '')\n }\n\n if (\n fileIsInRoutesDirectory(id, userConfig.routesDirectory) ||\n id.includes(splitPrefix)\n ) {\n return true\n }\n return false\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n userConfig = getConfig(options, ROOT)\n },\n },\n\n rspack(compiler) {\n ROOT = process.cwd()\n\n compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {\n self.normalModuleFactory.hooks.beforeResolve.tap(\n PLUGIN_NAME,\n (resolveData: { request: string }) => {\n if (resolveData.request.includes(JoinedSplitPrefix)) {\n resolveData.request = resolveData.request.replace(\n JoinedSplitPrefix,\n '',\n )\n }\n },\n )\n })\n\n userConfig = getConfig(options, ROOT)\n },\n\n webpack(compiler) {\n ROOT = process.cwd()\n\n compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {\n self.normalModuleFactory.hooks.beforeResolve.tap(\n PLUGIN_NAME,\n (resolveData: { request: string }) => {\n if (resolveData.request.includes(JoinedSplitPrefix)) {\n resolveData.request = resolveData.request.replace(\n JoinedSplitPrefix,\n '',\n )\n }\n },\n )\n })\n\n userConfig = getConfig(options, ROOT)\n\n if (\n userConfig.experimental?.enableCodeSplitting &&\n compiler.options.mode === 'production'\n ) {\n compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {\n console.info('✅ ' + PLUGIN_NAME + ': code-splitting done!')\n setTimeout(() => {\n process.exit(0)\n })\n })\n }\n },\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router-code-splitter-plugin.js","sources":["../../../src/core/router-code-splitter-plugin.ts"],"sourcesContent":["import { isAbsolute, join } from 'node:path'\nimport { fileURLToPath, pathToFileURL } from 'node:url'\n\nimport { getConfig } from './config'\nimport {\n compileCodeSplitReferenceRoute,\n compileCodeSplitVirtualRoute,\n} from './code-splitter/compilers'\nimport { splitPrefix } from './constants'\n\nimport type { Config } from './config'\nimport type { UnpluginContextMeta, UnpluginFactory } from 'unplugin'\n\nfunction capitalizeFirst(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nfunction fileIsInRoutesDirectory(filePath: string, routesDirectory: string) {\n const routesDirectoryPath = isAbsolute(routesDirectory)\n ? routesDirectory\n : join(process.cwd(), routesDirectory)\n\n return filePath.startsWith(routesDirectoryPath)\n}\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(externalPlugin: BannedBeforeExternalPlugin, framework: string) {\n super(`We detected that the '${externalPlugin.pkg}' was passed before '@tanstack/router-plugin'. Please make sure that '@tanstack/router-plugin' is passed before '${externalPlugin.pkg}' and try again: \ne.g.\nplugins: [\n TanStackRouter${capitalizeFirst(framework)}(), // Place this before ${externalPlugin.usage}\n ${externalPlugin.usage},\n]\n`)\n }\n}\n\nconst PLUGIN_NAME = 'unplugin:router-code-splitter'\nconst JoinedSplitPrefix = splitPrefix + ':'\n\nexport const unpluginRouterCodeSplitterFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, { framework }) => {\n const debug = Boolean(process.env.TSR_VITE_DEBUG)\n\n let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n const handleSplittingFile = (code: string, id: string) => {\n if (debug) console.info('Splitting route: ', id)\n\n const compiledVirtualRoute = compileCodeSplitVirtualRoute({\n code,\n root: ROOT,\n filename: id,\n })\n\n if (debug) console.info('')\n if (debug) console.info('Split Output')\n if (debug) console.info('')\n if (debug) console.info(compiledVirtualRoute.code)\n if (debug) console.info('')\n if (debug) console.info('')\n if (debug) console.info('')\n\n return compiledVirtualRoute\n }\n\n const handleCompilingFile = (code: string, id: string) => {\n if (debug) console.info('Handling createRoute: ', id)\n\n const compiledReferenceRoute = compileCodeSplitReferenceRoute({\n code,\n root: ROOT,\n filename: id,\n })\n\n if (debug) console.info('')\n if (debug) console.info('Compiled Output')\n if (debug) console.info('')\n if (debug) console.info(compiledReferenceRoute.code)\n if (debug) console.info('')\n if (debug) console.info('')\n if (debug) console.info('')\n\n return compiledReferenceRoute\n }\n\n return {\n name: 'router-code-splitter-plugin',\n enforce: 'pre',\n\n resolveId(source) {\n if (!userConfig.autoCodeSplitting) {\n return null\n }\n\n if (source.startsWith(splitPrefix + ':')) {\n return source.replace(splitPrefix + ':', '')\n }\n return null\n },\n\n transform(code, id) {\n if (!userConfig.autoCodeSplitting) {\n return null\n }\n\n const url = pathToFileURL(id)\n url.searchParams.delete('v')\n id = fileURLToPath(url).replace(/\\\\/g, '/')\n\n if (id.includes(splitPrefix)) {\n return handleSplittingFile(code, id)\n } else if (\n fileIsInRoutesDirectory(id, userConfig.routesDirectory) &&\n (code.includes('createRoute(') || code.includes('createFileRoute('))\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 handleCompilingFile(code, id)\n }\n\n return null\n },\n\n transformInclude(transformId) {\n if (!userConfig.autoCodeSplitting) {\n return undefined\n }\n\n let id = transformId\n\n if (id.startsWith(JoinedSplitPrefix)) {\n id = id.replace(JoinedSplitPrefix, '')\n }\n\n if (\n fileIsInRoutesDirectory(id, userConfig.routesDirectory) ||\n id.includes(splitPrefix)\n ) {\n return true\n }\n return false\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n\n userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(getConfig(options, ROOT))\n },\n },\n\n rspack(compiler) {\n ROOT = process.cwd()\n\n compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {\n self.normalModuleFactory.hooks.beforeResolve.tap(\n PLUGIN_NAME,\n (resolveData: { request: string }) => {\n if (resolveData.request.includes(JoinedSplitPrefix)) {\n resolveData.request = resolveData.request.replace(\n JoinedSplitPrefix,\n '',\n )\n }\n },\n )\n })\n\n userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(getConfig(options, ROOT))\n },\n\n webpack(compiler) {\n ROOT = process.cwd()\n\n compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {\n self.normalModuleFactory.hooks.beforeResolve.tap(\n PLUGIN_NAME,\n (resolveData: { request: string }) => {\n if (resolveData.request.includes(JoinedSplitPrefix)) {\n resolveData.request = resolveData.request.replace(\n JoinedSplitPrefix,\n '',\n )\n }\n },\n )\n })\n\n userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(getConfig(options, ROOT))\n\n if (\n userConfig.autoCodeSplitting &&\n compiler.options.mode === 'production'\n ) {\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\nfunction CHECK_USER_FLAGS_TO_BE_CHANGED(config: Config): Config {\n if (typeof config.experimental?.enableCodeSplitting !== 'undefined') {\n const message = `\n------\n⚠️ ⚠️ ⚠️\nERROR: The \"experimental.enableCodeSplitting\" flag has been made stable and is now \"autoCodeSplitting\". Please update your configuration file to use \"autoCodeSplitting\" instead of \"experimental.enableCodeSplitting\".\n------\n`\n console.error(message)\n throw new Error(message)\n }\n\n return config\n}\n"],"names":[],"mappings":"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"}
@@ -23,11 +23,13 @@ declare const TanStackRouterGeneratorRspack: (options?: Partial<{
23
23
  addExtensions: boolean;
24
24
  disableLogging: boolean;
25
25
  disableManifestGeneration: boolean;
26
+ apiBase: string;
26
27
  routeTreeFileHeader: string[];
27
28
  routeTreeFileFooter: string[];
28
29
  enableRouteGeneration?: boolean | undefined;
29
30
  routeFilePrefix?: string | undefined;
30
31
  routeFileIgnorePattern?: string | undefined;
32
+ autoCodeSplitting?: boolean | undefined;
31
33
  experimental?: {
32
34
  enableCodeSplitting?: boolean | undefined;
33
35
  } | undefined;
@@ -55,11 +57,13 @@ declare const TanStackRouterCodeSplitterRspack: (options?: Partial<{
55
57
  addExtensions: boolean;
56
58
  disableLogging: boolean;
57
59
  disableManifestGeneration: boolean;
60
+ apiBase: string;
58
61
  routeTreeFileHeader: string[];
59
62
  routeTreeFileFooter: string[];
60
63
  enableRouteGeneration?: boolean | undefined;
61
64
  routeFilePrefix?: string | undefined;
62
65
  routeFileIgnorePattern?: string | undefined;
66
+ autoCodeSplitting?: boolean | undefined;
63
67
  experimental?: {
64
68
  enableCodeSplitting?: boolean | undefined;
65
69
  } | undefined;
@@ -87,11 +91,13 @@ declare const TanStackRouterRspack: (options?: Partial<{
87
91
  addExtensions: boolean;
88
92
  disableLogging: boolean;
89
93
  disableManifestGeneration: boolean;
94
+ apiBase: string;
90
95
  routeTreeFileHeader: string[];
91
96
  routeTreeFileFooter: string[];
92
97
  enableRouteGeneration?: boolean | undefined;
93
98
  routeFilePrefix?: string | undefined;
94
99
  routeFileIgnorePattern?: string | undefined;
100
+ autoCodeSplitting?: boolean | undefined;
95
101
  experimental?: {
96
102
  enableCodeSplitting?: boolean | undefined;
97
103
  } | undefined;
@@ -19,11 +19,13 @@ declare const TanStackRouterGeneratorVite: (options?: Partial<{
19
19
  addExtensions: boolean;
20
20
  disableLogging: boolean;
21
21
  disableManifestGeneration: boolean;
22
+ apiBase: string;
22
23
  routeTreeFileHeader: string[];
23
24
  routeTreeFileFooter: string[];
24
25
  enableRouteGeneration?: boolean | undefined;
25
26
  routeFilePrefix?: string | undefined;
26
27
  routeFileIgnorePattern?: string | undefined;
28
+ autoCodeSplitting?: boolean | undefined;
27
29
  experimental?: {
28
30
  enableCodeSplitting?: boolean | undefined;
29
31
  } | undefined;
@@ -47,11 +49,13 @@ declare const TanStackRouterCodeSplitterVite: (options?: Partial<{
47
49
  addExtensions: boolean;
48
50
  disableLogging: boolean;
49
51
  disableManifestGeneration: boolean;
52
+ apiBase: string;
50
53
  routeTreeFileHeader: string[];
51
54
  routeTreeFileFooter: string[];
52
55
  enableRouteGeneration?: boolean | undefined;
53
56
  routeFilePrefix?: string | undefined;
54
57
  routeFileIgnorePattern?: string | undefined;
58
+ autoCodeSplitting?: boolean | undefined;
55
59
  experimental?: {
56
60
  enableCodeSplitting?: boolean | undefined;
57
61
  } | undefined;
@@ -75,11 +79,13 @@ declare const TanStackRouterVite: (options?: Partial<{
75
79
  addExtensions: boolean;
76
80
  disableLogging: boolean;
77
81
  disableManifestGeneration: boolean;
82
+ apiBase: string;
78
83
  routeTreeFileHeader: string[];
79
84
  routeTreeFileFooter: string[];
80
85
  enableRouteGeneration?: boolean | undefined;
81
86
  routeFilePrefix?: string | undefined;
82
87
  routeFileIgnorePattern?: string | undefined;
88
+ autoCodeSplitting?: boolean | undefined;
83
89
  experimental?: {
84
90
  enableCodeSplitting?: boolean | undefined;
85
91
  } | undefined;
@@ -19,11 +19,13 @@ declare const TanStackRouterGeneratorWebpack: (options?: Partial<{
19
19
  addExtensions: boolean;
20
20
  disableLogging: boolean;
21
21
  disableManifestGeneration: boolean;
22
+ apiBase: string;
22
23
  routeTreeFileHeader: string[];
23
24
  routeTreeFileFooter: string[];
24
25
  enableRouteGeneration?: boolean | undefined;
25
26
  routeFilePrefix?: string | undefined;
26
27
  routeFileIgnorePattern?: string | undefined;
28
+ autoCodeSplitting?: boolean | undefined;
27
29
  experimental?: {
28
30
  enableCodeSplitting?: boolean | undefined;
29
31
  } | undefined;
@@ -47,11 +49,13 @@ declare const TanStackRouterCodeSplitterWebpack: (options?: Partial<{
47
49
  addExtensions: boolean;
48
50
  disableLogging: boolean;
49
51
  disableManifestGeneration: boolean;
52
+ apiBase: string;
50
53
  routeTreeFileHeader: string[];
51
54
  routeTreeFileFooter: string[];
52
55
  enableRouteGeneration?: boolean | undefined;
53
56
  routeFilePrefix?: string | undefined;
54
57
  routeFileIgnorePattern?: string | undefined;
58
+ autoCodeSplitting?: boolean | undefined;
55
59
  experimental?: {
56
60
  enableCodeSplitting?: boolean | undefined;
57
61
  } | undefined;
@@ -75,11 +79,13 @@ declare const TanStackRouterWebpack: (options?: Partial<{
75
79
  addExtensions: boolean;
76
80
  disableLogging: boolean;
77
81
  disableManifestGeneration: boolean;
82
+ apiBase: string;
78
83
  routeTreeFileHeader: string[];
79
84
  routeTreeFileFooter: string[];
80
85
  enableRouteGeneration?: boolean | undefined;
81
86
  routeFilePrefix?: string | undefined;
82
87
  routeFileIgnorePattern?: string | undefined;
88
+ autoCodeSplitting?: boolean | undefined;
83
89
  experimental?: {
84
90
  enableCodeSplitting?: boolean | undefined;
85
91
  } | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/router-plugin",
3
- "version": "1.48.6",
3
+ "version": "1.51.0",
4
4
  "description": "Modern and scalable routing for React applications",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
@@ -92,7 +92,7 @@
92
92
  "chokidar": "^3.6.0",
93
93
  "unplugin": "^1.12.2",
94
94
  "zod": "^3.23.8",
95
- "@tanstack/router-generator": "^1.48.3"
95
+ "@tanstack/router-generator": "^1.51.0"
96
96
  },
97
97
  "peerDependencies": {
98
98
  "@rsbuild/core": ">=1.0.0",
@@ -107,7 +107,7 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
107
107
  enforce: 'pre',
108
108
 
109
109
  resolveId(source) {
110
- if (!userConfig.experimental?.enableCodeSplitting) {
110
+ if (!userConfig.autoCodeSplitting) {
111
111
  return null
112
112
  }
113
113
 
@@ -118,7 +118,7 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
118
118
  },
119
119
 
120
120
  transform(code, id) {
121
- if (!userConfig.experimental?.enableCodeSplitting) {
121
+ if (!userConfig.autoCodeSplitting) {
122
122
  return null
123
123
  }
124
124
 
@@ -149,7 +149,7 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
149
149
  },
150
150
 
151
151
  transformInclude(transformId) {
152
- if (!userConfig.experimental?.enableCodeSplitting) {
152
+ if (!userConfig.autoCodeSplitting) {
153
153
  return undefined
154
154
  }
155
155
 
@@ -171,7 +171,8 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
171
171
  vite: {
172
172
  configResolved(config) {
173
173
  ROOT = config.root
174
- userConfig = getConfig(options, ROOT)
174
+
175
+ userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(getConfig(options, ROOT))
175
176
  },
176
177
  },
177
178
 
@@ -192,7 +193,7 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
192
193
  )
193
194
  })
194
195
 
195
- userConfig = getConfig(options, ROOT)
196
+ userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(getConfig(options, ROOT))
196
197
  },
197
198
 
198
199
  webpack(compiler) {
@@ -212,13 +213,13 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
212
213
  )
213
214
  })
214
215
 
215
- userConfig = getConfig(options, ROOT)
216
+ userConfig = CHECK_USER_FLAGS_TO_BE_CHANGED(getConfig(options, ROOT))
216
217
 
217
218
  if (
218
- userConfig.experimental?.enableCodeSplitting &&
219
+ userConfig.autoCodeSplitting &&
219
220
  compiler.options.mode === 'production'
220
221
  ) {
221
- compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {
222
+ compiler.hooks.done.tap(PLUGIN_NAME, () => {
222
223
  console.info('✅ ' + PLUGIN_NAME + ': code-splitting done!')
223
224
  setTimeout(() => {
224
225
  process.exit(0)
@@ -228,3 +229,18 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
228
229
  },
229
230
  }
230
231
  }
232
+
233
+ function CHECK_USER_FLAGS_TO_BE_CHANGED(config: Config): Config {
234
+ if (typeof config.experimental?.enableCodeSplitting !== 'undefined') {
235
+ const message = `
236
+ ------
237
+ ⚠️ ⚠️ ⚠️
238
+ ERROR: The "experimental.enableCodeSplitting" flag has been made stable and is now "autoCodeSplitting". Please update your configuration file to use "autoCodeSplitting" instead of "experimental.enableCodeSplitting".
239
+ ------
240
+ `
241
+ console.error(message)
242
+ throw new Error(message)
243
+ }
244
+
245
+ return config
246
+ }