@tanstack/router-plugin 1.48.5 → 1.49.3
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/ast.cjs.map +1 -0
- package/dist/cjs/{compilers.cjs → core/code-splitter/compilers.cjs} +1 -1
- package/dist/cjs/core/code-splitter/compilers.cjs.map +1 -0
- package/dist/cjs/core/config.cjs.map +1 -0
- package/dist/cjs/{config.d.cts → core/config.d.cts} +4 -0
- package/dist/cjs/core/constants.cjs.map +1 -0
- package/dist/cjs/{code-splitter.cjs → core/router-code-splitter-plugin.cjs} +24 -14
- package/dist/cjs/core/router-code-splitter-plugin.cjs.map +1 -0
- package/dist/cjs/core/router-composed-plugin.cjs +13 -0
- package/dist/cjs/core/router-composed-plugin.cjs.map +1 -0
- package/dist/cjs/{router-generator.cjs → core/router-generator-plugin.cjs} +1 -1
- package/dist/cjs/core/router-generator-plugin.cjs.map +1 -0
- package/dist/cjs/index.cjs +5 -5
- package/dist/cjs/index.d.cts +4 -4
- package/dist/cjs/rspack.cjs +7 -7
- package/dist/cjs/rspack.cjs.map +1 -1
- package/dist/cjs/rspack.d.cts +4 -1
- package/dist/cjs/vite.cjs +7 -7
- package/dist/cjs/vite.cjs.map +1 -1
- package/dist/cjs/vite.d.cts +4 -1
- package/dist/cjs/webpack.cjs +7 -7
- package/dist/cjs/webpack.cjs.map +1 -1
- package/dist/cjs/webpack.d.cts +4 -1
- package/dist/esm/core/code-splitter/ast.js.map +1 -0
- package/dist/esm/{compilers.js → core/code-splitter/compilers.js} +1 -1
- package/dist/esm/core/code-splitter/compilers.js.map +1 -0
- package/dist/esm/{config.d.ts → core/config.d.ts} +4 -0
- package/dist/esm/core/config.js.map +1 -0
- package/dist/esm/core/constants.js.map +1 -0
- package/dist/esm/{code-splitter.js → core/router-code-splitter-plugin.js} +24 -14
- package/dist/esm/core/router-code-splitter-plugin.js.map +1 -0
- package/dist/esm/{composed.js → core/router-composed-plugin.js} +3 -3
- package/dist/esm/core/router-composed-plugin.js.map +1 -0
- package/dist/esm/{router-generator.js → core/router-generator-plugin.js} +1 -1
- package/dist/esm/core/router-generator-plugin.js.map +1 -0
- package/dist/esm/index.d.ts +4 -4
- package/dist/esm/index.js +3 -3
- package/dist/esm/rspack.d.ts +4 -1
- package/dist/esm/rspack.js +4 -4
- package/dist/esm/rspack.js.map +1 -1
- package/dist/esm/vite.d.ts +4 -1
- package/dist/esm/vite.js +4 -4
- package/dist/esm/vite.js.map +1 -1
- package/dist/esm/webpack.d.ts +4 -1
- package/dist/esm/webpack.js +4 -4
- package/dist/esm/webpack.js.map +1 -1
- package/package.json +2 -2
- package/src/{compilers.ts → core/code-splitter/compilers.ts} +1 -1
- package/src/{code-splitter.ts → core/router-code-splitter-plugin.ts} +26 -10
- package/src/{composed.ts → core/router-composed-plugin.ts} +2 -2
- package/src/index.ts +4 -4
- package/src/rspack.ts +6 -5
- package/src/vite.ts +6 -5
- package/src/webpack.ts +6 -5
- package/dist/cjs/ast.cjs.map +0 -1
- package/dist/cjs/code-splitter.cjs.map +0 -1
- package/dist/cjs/compilers.cjs.map +0 -1
- package/dist/cjs/composed.cjs +0 -13
- package/dist/cjs/composed.cjs.map +0 -1
- package/dist/cjs/config.cjs.map +0 -1
- package/dist/cjs/constants.cjs.map +0 -1
- package/dist/cjs/router-generator.cjs.map +0 -1
- package/dist/esm/ast.js.map +0 -1
- package/dist/esm/code-splitter.js.map +0 -1
- package/dist/esm/compilers.js.map +0 -1
- package/dist/esm/composed.js.map +0 -1
- package/dist/esm/config.js.map +0 -1
- package/dist/esm/constants.js.map +0 -1
- package/dist/esm/router-generator.js.map +0 -1
- /package/dist/cjs/{ast.cjs → core/code-splitter/ast.cjs} +0 -0
- /package/dist/cjs/{ast.d.cts → core/code-splitter/ast.d.cts} +0 -0
- /package/dist/cjs/{compilers.d.cts → core/code-splitter/compilers.d.cts} +0 -0
- /package/dist/cjs/{config.cjs → core/config.cjs} +0 -0
- /package/dist/cjs/{constants.cjs → core/constants.cjs} +0 -0
- /package/dist/cjs/{constants.d.cts → core/constants.d.cts} +0 -0
- /package/dist/cjs/{code-splitter.d.cts → core/router-code-splitter-plugin.d.cts} +0 -0
- /package/dist/cjs/{composed.d.cts → core/router-composed-plugin.d.cts} +0 -0
- /package/dist/cjs/{router-generator.d.cts → core/router-generator-plugin.d.cts} +0 -0
- /package/dist/esm/{ast.d.ts → core/code-splitter/ast.d.ts} +0 -0
- /package/dist/esm/{ast.js → core/code-splitter/ast.js} +0 -0
- /package/dist/esm/{compilers.d.ts → core/code-splitter/compilers.d.ts} +0 -0
- /package/dist/esm/{config.js → core/config.js} +0 -0
- /package/dist/esm/{constants.d.ts → core/constants.d.ts} +0 -0
- /package/dist/esm/{constants.js → core/constants.js} +0 -0
- /package/dist/esm/{code-splitter.d.ts → core/router-code-splitter-plugin.d.ts} +0 -0
- /package/dist/esm/{composed.d.ts → core/router-composed-plugin.d.ts} +0 -0
- /package/dist/esm/{router-generator.d.ts → core/router-generator-plugin.d.ts} +0 -0
- /package/src/{ast.ts → core/code-splitter/ast.ts} +0 -0
- /package/src/{config.ts → core/config.ts} +0 -0
- /package/src/{constants.ts → core/constants.ts} +0 -0
- /package/src/{router-generator.ts → core/router-generator-plugin.ts} +0 -0
|
@@ -14,6 +14,7 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
14
14
|
disableManifestGeneration: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
15
15
|
routeTreeFileHeader: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
16
16
|
routeTreeFileFooter: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
17
|
+
autoCodeSplitting: z.ZodOptional<z.ZodBoolean>;
|
|
17
18
|
experimental: z.ZodOptional<z.ZodObject<{
|
|
18
19
|
enableCodeSplitting: z.ZodOptional<z.ZodBoolean>;
|
|
19
20
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -38,6 +39,7 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
38
39
|
enableRouteGeneration?: boolean | undefined;
|
|
39
40
|
routeFilePrefix?: string | undefined;
|
|
40
41
|
routeFileIgnorePattern?: string | undefined;
|
|
42
|
+
autoCodeSplitting?: boolean | undefined;
|
|
41
43
|
experimental?: {
|
|
42
44
|
enableCodeSplitting?: boolean | undefined;
|
|
43
45
|
} | undefined;
|
|
@@ -56,6 +58,7 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
56
58
|
disableManifestGeneration?: boolean | undefined;
|
|
57
59
|
routeTreeFileHeader?: string[] | undefined;
|
|
58
60
|
routeTreeFileFooter?: string[] | undefined;
|
|
61
|
+
autoCodeSplitting?: boolean | undefined;
|
|
59
62
|
experimental?: {
|
|
60
63
|
enableCodeSplitting?: boolean | undefined;
|
|
61
64
|
} | undefined;
|
|
@@ -75,6 +78,7 @@ export declare const getConfig: (inlineConfig: Partial<Config>, root: string) =>
|
|
|
75
78
|
enableRouteGeneration?: boolean | undefined;
|
|
76
79
|
routeFilePrefix?: string | undefined;
|
|
77
80
|
routeFileIgnorePattern?: string | undefined;
|
|
81
|
+
autoCodeSplitting?: boolean | undefined;
|
|
78
82
|
experimental?: {
|
|
79
83
|
enableCodeSplitting?: boolean | undefined;
|
|
80
84
|
} | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../../../src/core/config.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n configSchema as generatorConfigSchema,\n getConfig as getGeneratorConfig,\n} from '@tanstack/router-generator'\n\nexport const configSchema = generatorConfigSchema.extend({\n enableRouteGeneration: z.boolean().optional(),\n})\n\nexport const getConfig = (inlineConfig: Partial<Config>, root: string) => {\n const config = getGeneratorConfig(inlineConfig, root)\n\n return configSchema.parse({ ...config, ...inlineConfig })\n}\n\nexport type Config = z.infer<typeof configSchema>\n"],"names":["generatorConfigSchema","getGeneratorConfig"],"mappings":";;AAMa,MAAA,eAAeA,eAAsB,OAAO;AAAA,EACvD,uBAAuB,EAAE,QAAQ,EAAE,SAAS;AAC9C,CAAC;AAEY,MAAA,YAAY,CAAC,cAA+B,SAAiB;AAClE,QAAA,SAASC,YAAmB,cAAc,IAAI;AAEpD,SAAO,aAAa,MAAM,EAAE,GAAG,QAAQ,GAAG,cAAc;AAC1D;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../src/core/constants.ts"],"sourcesContent":["export const CONFIG_FILE_NAME = 'tsr.config.json'\nexport const splitPrefix = 'tsr-split'\n"],"names":[],"mappings":"AAAO,MAAM,mBAAmB;AACzB,MAAM,cAAc;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isAbsolute, join } from "node:path";
|
|
2
2
|
import { pathToFileURL, fileURLToPath } from "node:url";
|
|
3
|
-
import { compileCodeSplitVirtualRoute, compileCodeSplitReferenceRoute } from "./compilers.js";
|
|
4
3
|
import { getConfig } from "./config.js";
|
|
4
|
+
import { compileCodeSplitVirtualRoute, compileCodeSplitReferenceRoute } from "./code-splitter/compilers.js";
|
|
5
5
|
import { splitPrefix } from "./constants.js";
|
|
6
6
|
function capitalizeFirst(str) {
|
|
7
7
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
@@ -71,8 +71,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
71
71
|
name: "router-code-splitter-plugin",
|
|
72
72
|
enforce: "pre",
|
|
73
73
|
resolveId(source) {
|
|
74
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
161
|
-
compiler.hooks.done.tap(PLUGIN_NAME, (
|
|
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,7 +164,21 @@ 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
|
};
|
|
174
|
-
//# sourceMappingURL=code-splitter.js.map
|
|
184
|
+
//# sourceMappingURL=router-code-splitter-plugin.js.map
|
|
@@ -0,0 +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.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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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { unpluginRouterGeneratorFactory } from "./router-generator.js";
|
|
2
|
-
import { unpluginRouterCodeSplitterFactory } from "./code-splitter.js";
|
|
1
|
+
import { unpluginRouterGeneratorFactory } from "./router-generator-plugin.js";
|
|
2
|
+
import { unpluginRouterCodeSplitterFactory } from "./router-code-splitter-plugin.js";
|
|
3
3
|
const unpluginRouterComposedFactory = (options = {}, meta) => {
|
|
4
4
|
const routerGenerator = unpluginRouterGeneratorFactory(options);
|
|
5
5
|
const routerGeneratorOptions = Array.isArray(routerGenerator) ? routerGenerator : [routerGenerator];
|
|
@@ -10,4 +10,4 @@ const unpluginRouterComposedFactory = (options = {}, meta) => {
|
|
|
10
10
|
export {
|
|
11
11
|
unpluginRouterComposedFactory
|
|
12
12
|
};
|
|
13
|
-
//# sourceMappingURL=composed.js.map
|
|
13
|
+
//# sourceMappingURL=router-composed-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-composed-plugin.js","sources":["../../../src/core/router-composed-plugin.ts"],"sourcesContent":["import { unpluginRouterGeneratorFactory } from './router-generator-plugin'\nimport { unpluginRouterCodeSplitterFactory } from './router-code-splitter-plugin'\n\nimport type { Config } from './config'\nimport type { UnpluginFactory } from 'unplugin'\n\nexport const unpluginRouterComposedFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, meta) => {\n const routerGenerator = unpluginRouterGeneratorFactory(options, meta)\n\n const routerGeneratorOptions = Array.isArray(routerGenerator)\n ? routerGenerator\n : [routerGenerator]\n\n const routerCodeSplitter = unpluginRouterCodeSplitterFactory(options, meta)\n const routerCodeSplitterOptions = Array.isArray(routerCodeSplitter)\n ? routerCodeSplitter\n : [routerCodeSplitter]\n\n return [...routerGeneratorOptions, ...routerCodeSplitterOptions]\n}\n"],"names":[],"mappings":";;AAMO,MAAM,gCAET,CAAC,UAAU,IAAI,SAAS;AACpB,QAAA,kBAAkB,+BAA+B,OAAa;AAEpE,QAAM,yBAAyB,MAAM,QAAQ,eAAe,IACxD,kBACA,CAAC,eAAe;AAEd,QAAA,qBAAqB,kCAAkC,SAAS,IAAI;AAC1E,QAAM,4BAA4B,MAAM,QAAQ,kBAAkB,IAC9D,qBACA,CAAC,kBAAkB;AAEvB,SAAO,CAAC,GAAG,wBAAwB,GAAG,yBAAyB;AACjE;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-generator-plugin.js","sources":["../../../src/core/router-generator-plugin.ts"],"sourcesContent":["import { isAbsolute, join, normalize, resolve } from 'node:path'\nimport { generator } from '@tanstack/router-generator'\n\nimport { getConfig } from './config'\nimport { CONFIG_FILE_NAME } from './constants'\nimport type { UnpluginFactory } from 'unplugin'\nimport type { Config } from './config'\n\nlet lock = false\nconst checkLock = () => lock\nconst setLock = (bool: boolean) => {\n lock = bool\n}\n\nconst PLUGIN_NAME = 'unplugin:router-generator'\n\nexport const unpluginRouterGeneratorFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}) => {\n let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n const getRoutesDirectoryPath = () => {\n return isAbsolute(userConfig.routesDirectory)\n ? userConfig.routesDirectory\n : join(ROOT, userConfig.routesDirectory)\n }\n\n const generate = async () => {\n if (checkLock()) {\n return\n }\n\n setLock(true)\n\n try {\n await generator(userConfig)\n } catch (err) {\n console.error(err)\n console.info()\n } finally {\n setLock(false)\n }\n }\n\n const handleFile = async (\n file: string,\n event: 'create' | 'update' | 'delete',\n ) => {\n const filePath = normalize(file)\n\n if (filePath === join(ROOT, CONFIG_FILE_NAME)) {\n userConfig = getConfig(options, ROOT)\n return\n }\n\n if (\n event === 'update' &&\n filePath === resolve(userConfig.generatedRouteTree)\n ) {\n // skip generating routes if the generated route tree is updated\n return\n }\n\n const routesDirectoryPath = getRoutesDirectoryPath()\n if (filePath.startsWith(routesDirectoryPath)) {\n await generate()\n }\n }\n\n const run: (cb: () => Promise<void> | void) => Promise<void> = async (cb) => {\n if (userConfig.enableRouteGeneration ?? true) {\n await cb()\n }\n }\n\n return {\n name: 'router-generator-plugin',\n async watchChange(id, { event }) {\n await run(async () => {\n await handleFile(id, event)\n })\n },\n vite: {\n async configResolved(config) {\n ROOT = config.root\n userConfig = getConfig(options, ROOT)\n\n await run(generate)\n },\n },\n async rspack(compiler) {\n userConfig = getConfig(options, ROOT)\n\n // rspack watcher doesn't register newly created files\n if (compiler.options.mode === 'production') {\n await run(generate)\n } else {\n const routesDirectoryPath = getRoutesDirectoryPath()\n const chokidar = await import('chokidar')\n chokidar.watch(routesDirectoryPath).on('add', async () => {\n await run(generate)\n })\n }\n },\n async webpack(compiler) {\n userConfig = getConfig(options, ROOT)\n\n // webpack watcher doesn't register newly created files\n if (compiler.options.mode === 'production') {\n await run(generate)\n } else {\n const routesDirectoryPath = getRoutesDirectoryPath()\n const chokidar = await import('chokidar')\n chokidar.watch(routesDirectoryPath).on('add', async () => {\n await run(generate)\n })\n }\n\n if (compiler.options.mode === 'production') {\n compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {\n console.info('✅ ' + PLUGIN_NAME + ': route-tree generation done')\n setTimeout(() => {\n process.exit(0)\n })\n })\n }\n },\n }\n}\n"],"names":[],"mappings":";;;;AAQA,IAAI,OAAO;AACX,MAAM,YAAY,MAAM;AACxB,MAAM,UAAU,CAAC,SAAkB;AAC1B,SAAA;AACT;AAEA,MAAM,cAAc;AAEb,MAAM,iCAET,CAAC,UAAU,OAAO;AAChB,MAAA,OAAe,QAAQ;AAC3B,MAAI,aAAa;AAEjB,QAAM,yBAAyB,MAAM;AAC5B,WAAA,WAAW,WAAW,eAAe,IACxC,WAAW,kBACX,KAAK,MAAM,WAAW,eAAe;AAAA,EAAA;AAG3C,QAAM,WAAW,YAAY;AAC3B,QAAI,aAAa;AACf;AAAA,IACF;AAEA,YAAQ,IAAI;AAER,QAAA;AACF,YAAM,UAAU,UAAU;AAAA,aACnB,KAAK;AACZ,cAAQ,MAAM,GAAG;AACjB,cAAQ,KAAK;AAAA,IAAA,UACb;AACA,cAAQ,KAAK;AAAA,IACf;AAAA,EAAA;AAGI,QAAA,aAAa,OACjB,MACA,UACG;AACG,UAAA,WAAW,UAAU,IAAI;AAE/B,QAAI,aAAa,KAAK,MAAM,gBAAgB,GAAG;AAChC,mBAAA,UAAU,SAAS,IAAI;AACpC;AAAA,IACF;AAEA,QACE,UAAU,YACV,aAAa,QAAQ,WAAW,kBAAkB,GAClD;AAEA;AAAA,IACF;AAEA,UAAM,sBAAsB;AACxB,QAAA,SAAS,WAAW,mBAAmB,GAAG;AAC5C,YAAM,SAAS;AAAA,IACjB;AAAA,EAAA;AAGI,QAAA,MAAyD,OAAO,OAAO;AACvE,QAAA,WAAW,yBAAyB,MAAM;AAC5C,YAAM,GAAG;AAAA,IACX;AAAA,EAAA;AAGK,SAAA;AAAA,IACL,MAAM;AAAA,IACN,MAAM,YAAY,IAAI,EAAE,SAAS;AAC/B,YAAM,IAAI,YAAY;AACd,cAAA,WAAW,IAAI,KAAK;AAAA,MAAA,CAC3B;AAAA,IACH;AAAA,IACA,MAAM;AAAA,MACJ,MAAM,eAAe,QAAQ;AAC3B,eAAO,OAAO;AACD,qBAAA,UAAU,SAAS,IAAI;AAEpC,cAAM,IAAI,QAAQ;AAAA,MACpB;AAAA,IACF;AAAA,IACA,MAAM,OAAO,UAAU;AACR,mBAAA,UAAU,SAAS,IAAI;AAGhC,UAAA,SAAS,QAAQ,SAAS,cAAc;AAC1C,cAAM,IAAI,QAAQ;AAAA,MAAA,OACb;AACL,cAAM,sBAAsB;AACtB,cAAA,WAAW,MAAM,OAAO,UAAU;AACxC,iBAAS,MAAM,mBAAmB,EAAE,GAAG,OAAO,YAAY;AACxD,gBAAM,IAAI,QAAQ;AAAA,QAAA,CACnB;AAAA,MACH;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,UAAU;AACT,mBAAA,UAAU,SAAS,IAAI;AAGhC,UAAA,SAAS,QAAQ,SAAS,cAAc;AAC1C,cAAM,IAAI,QAAQ;AAAA,MAAA,OACb;AACL,cAAM,sBAAsB;AACtB,cAAA,WAAW,MAAM,OAAO,UAAU;AACxC,iBAAS,MAAM,mBAAmB,EAAE,GAAG,OAAO,YAAY;AACxD,gBAAM,IAAI,QAAQ;AAAA,QAAA,CACnB;AAAA,MACH;AAEI,UAAA,SAAS,QAAQ,SAAS,cAAc;AAC1C,iBAAS,MAAM,KAAK,IAAI,aAAa,CAAC,UAAU;AACtC,kBAAA,KAAK,OAAO,cAAc,8BAA8B;AAChE,qBAAW,MAAM;AACf,oBAAQ,KAAK,CAAC;AAAA,UAAA,CACf;AAAA,QAAA,CACF;AAAA,MACH;AAAA,IACF;AAAA,EAAA;AAEJ;"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export type { Config } from './config.js';
|
|
1
|
+
export { configSchema } from './core/config.js';
|
|
2
|
+
export { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin.js';
|
|
3
|
+
export { unpluginRouterGeneratorFactory } from './core/router-generator-plugin.js';
|
|
4
|
+
export type { Config } from './core/config.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { configSchema } from "./core/config.js";
|
|
2
|
+
import { unpluginRouterCodeSplitterFactory } from "./core/router-code-splitter-plugin.js";
|
|
3
|
+
import { unpluginRouterGeneratorFactory } from "./core/router-generator-plugin.js";
|
|
4
4
|
export {
|
|
5
5
|
configSchema,
|
|
6
6
|
unpluginRouterCodeSplitterFactory,
|
package/dist/esm/rspack.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { configSchema, Config } from './config.js';
|
|
1
|
+
import { configSchema, Config } from './core/config.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @example
|
|
@@ -28,6 +28,7 @@ declare const TanStackRouterGeneratorRspack: (options?: Partial<{
|
|
|
28
28
|
enableRouteGeneration?: boolean | undefined;
|
|
29
29
|
routeFilePrefix?: string | undefined;
|
|
30
30
|
routeFileIgnorePattern?: string | undefined;
|
|
31
|
+
autoCodeSplitting?: boolean | undefined;
|
|
31
32
|
experimental?: {
|
|
32
33
|
enableCodeSplitting?: boolean | undefined;
|
|
33
34
|
} | undefined;
|
|
@@ -60,6 +61,7 @@ declare const TanStackRouterCodeSplitterRspack: (options?: Partial<{
|
|
|
60
61
|
enableRouteGeneration?: boolean | undefined;
|
|
61
62
|
routeFilePrefix?: string | undefined;
|
|
62
63
|
routeFileIgnorePattern?: string | undefined;
|
|
64
|
+
autoCodeSplitting?: boolean | undefined;
|
|
63
65
|
experimental?: {
|
|
64
66
|
enableCodeSplitting?: boolean | undefined;
|
|
65
67
|
} | undefined;
|
|
@@ -92,6 +94,7 @@ declare const TanStackRouterRspack: (options?: Partial<{
|
|
|
92
94
|
enableRouteGeneration?: boolean | undefined;
|
|
93
95
|
routeFilePrefix?: string | undefined;
|
|
94
96
|
routeFileIgnorePattern?: string | undefined;
|
|
97
|
+
autoCodeSplitting?: boolean | undefined;
|
|
95
98
|
experimental?: {
|
|
96
99
|
enableCodeSplitting?: boolean | undefined;
|
|
97
100
|
} | undefined;
|
package/dist/esm/rspack.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRspackPlugin } from "unplugin";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { unpluginRouterGeneratorFactory } from "./router-generator.js";
|
|
5
|
-
import { unpluginRouterComposedFactory } from "./composed.js";
|
|
2
|
+
import { configSchema } from "./core/config.js";
|
|
3
|
+
import { unpluginRouterCodeSplitterFactory } from "./core/router-code-splitter-plugin.js";
|
|
4
|
+
import { unpluginRouterGeneratorFactory } from "./core/router-generator-plugin.js";
|
|
5
|
+
import { unpluginRouterComposedFactory } from "./core/router-composed-plugin.js";
|
|
6
6
|
const TanStackRouterGeneratorRspack = /* @__PURE__ */ createRspackPlugin(
|
|
7
7
|
unpluginRouterGeneratorFactory
|
|
8
8
|
);
|
package/dist/esm/rspack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rspack.js","sources":["../../src/rspack.ts"],"sourcesContent":["import { createRspackPlugin } from 'unplugin'\nimport {
|
|
1
|
+
{"version":3,"file":"rspack.js","sources":["../../src/rspack.ts"],"sourcesContent":["import { createRspackPlugin } from 'unplugin'\n\nimport { configSchema } from './core/config'\nimport { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin'\nimport { unpluginRouterGeneratorFactory } from './core/router-generator-plugin'\nimport { unpluginRouterComposedFactory } from './core/router-composed-plugin'\nimport type { Config } from './core/config'\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterGeneratorRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterGeneratorRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterGeneratorFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterCodeSplitterRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterCodeSplitterRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterCodeSplitterFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterComposedFactory,\n)\n\nexport default TanStackRouterRspack\nexport {\n configSchema,\n TanStackRouterRspack,\n TanStackRouterGeneratorRspack,\n TanStackRouterCodeSplitterRspack,\n}\nexport type { Config }\n"],"names":[],"mappings":";;;;;AAqBA,MAAM,gCAAgD;AAAA,EACpD;AACF;AAeA,MAAM,mCAAmD;AAAA,EACvD;AACF;AAeA,MAAM,uBAAuC;AAAA,EAC3C;AACF;"}
|
package/dist/esm/vite.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { configSchema, Config } from './config.js';
|
|
1
|
+
import { configSchema, Config } from './core/config.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @example
|
|
@@ -24,6 +24,7 @@ declare const TanStackRouterGeneratorVite: (options?: Partial<{
|
|
|
24
24
|
enableRouteGeneration?: boolean | undefined;
|
|
25
25
|
routeFilePrefix?: string | undefined;
|
|
26
26
|
routeFileIgnorePattern?: string | undefined;
|
|
27
|
+
autoCodeSplitting?: boolean | undefined;
|
|
27
28
|
experimental?: {
|
|
28
29
|
enableCodeSplitting?: boolean | undefined;
|
|
29
30
|
} | undefined;
|
|
@@ -52,6 +53,7 @@ declare const TanStackRouterCodeSplitterVite: (options?: Partial<{
|
|
|
52
53
|
enableRouteGeneration?: boolean | undefined;
|
|
53
54
|
routeFilePrefix?: string | undefined;
|
|
54
55
|
routeFileIgnorePattern?: string | undefined;
|
|
56
|
+
autoCodeSplitting?: boolean | undefined;
|
|
55
57
|
experimental?: {
|
|
56
58
|
enableCodeSplitting?: boolean | undefined;
|
|
57
59
|
} | undefined;
|
|
@@ -80,6 +82,7 @@ declare const TanStackRouterVite: (options?: Partial<{
|
|
|
80
82
|
enableRouteGeneration?: boolean | undefined;
|
|
81
83
|
routeFilePrefix?: string | undefined;
|
|
82
84
|
routeFileIgnorePattern?: string | undefined;
|
|
85
|
+
autoCodeSplitting?: boolean | undefined;
|
|
83
86
|
experimental?: {
|
|
84
87
|
enableCodeSplitting?: boolean | undefined;
|
|
85
88
|
} | undefined;
|
package/dist/esm/vite.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createVitePlugin } from "unplugin";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { unpluginRouterGeneratorFactory } from "./router-generator.js";
|
|
5
|
-
import { unpluginRouterComposedFactory } from "./composed.js";
|
|
2
|
+
import { configSchema } from "./core/config.js";
|
|
3
|
+
import { unpluginRouterCodeSplitterFactory } from "./core/router-code-splitter-plugin.js";
|
|
4
|
+
import { unpluginRouterGeneratorFactory } from "./core/router-generator-plugin.js";
|
|
5
|
+
import { unpluginRouterComposedFactory } from "./core/router-composed-plugin.js";
|
|
6
6
|
const TanStackRouterGeneratorVite = createVitePlugin(
|
|
7
7
|
unpluginRouterGeneratorFactory
|
|
8
8
|
);
|
package/dist/esm/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sources":["../../src/vite.ts"],"sourcesContent":["import { createVitePlugin } from 'unplugin'\nimport {
|
|
1
|
+
{"version":3,"file":"vite.js","sources":["../../src/vite.ts"],"sourcesContent":["import { createVitePlugin } from 'unplugin'\n\nimport { configSchema } from './core/config'\nimport { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin'\nimport { unpluginRouterGeneratorFactory } from './core/router-generator-plugin'\nimport { unpluginRouterComposedFactory } from './core/router-composed-plugin'\n\nimport type { Config } from './core/config'\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * plugins: [TanStackRouterGeneratorVite()],\n * // ...\n * })\n * ```\n */\nconst TanStackRouterGeneratorVite = createVitePlugin(\n unpluginRouterGeneratorFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * plugins: [TanStackRouterCodeSplitterVite()],\n * // ...\n * })\n * ```\n */\nconst TanStackRouterCodeSplitterVite = createVitePlugin(\n unpluginRouterCodeSplitterFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * plugins: [TanStackRouterVite()],\n * // ...\n * })\n * ```\n */\nconst TanStackRouterVite = createVitePlugin(unpluginRouterComposedFactory)\n\nexport default TanStackRouterVite\nexport {\n configSchema,\n TanStackRouterGeneratorVite,\n TanStackRouterCodeSplitterVite,\n TanStackRouterVite,\n}\nexport type { Config }\n"],"names":[],"mappings":";;;;;AAkBA,MAAM,8BAA8B;AAAA,EAClC;AACF;AAWA,MAAM,iCAAiC;AAAA,EACrC;AACF;AAWM,MAAA,qBAAqB,iBAAiB,6BAA6B;"}
|
package/dist/esm/webpack.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { configSchema, Config } from './config.js';
|
|
1
|
+
import { configSchema, Config } from './core/config.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @example
|
|
@@ -24,6 +24,7 @@ declare const TanStackRouterGeneratorWebpack: (options?: Partial<{
|
|
|
24
24
|
enableRouteGeneration?: boolean | undefined;
|
|
25
25
|
routeFilePrefix?: string | undefined;
|
|
26
26
|
routeFileIgnorePattern?: string | undefined;
|
|
27
|
+
autoCodeSplitting?: boolean | undefined;
|
|
27
28
|
experimental?: {
|
|
28
29
|
enableCodeSplitting?: boolean | undefined;
|
|
29
30
|
} | undefined;
|
|
@@ -52,6 +53,7 @@ declare const TanStackRouterCodeSplitterWebpack: (options?: Partial<{
|
|
|
52
53
|
enableRouteGeneration?: boolean | undefined;
|
|
53
54
|
routeFilePrefix?: string | undefined;
|
|
54
55
|
routeFileIgnorePattern?: string | undefined;
|
|
56
|
+
autoCodeSplitting?: boolean | undefined;
|
|
55
57
|
experimental?: {
|
|
56
58
|
enableCodeSplitting?: boolean | undefined;
|
|
57
59
|
} | undefined;
|
|
@@ -80,6 +82,7 @@ declare const TanStackRouterWebpack: (options?: Partial<{
|
|
|
80
82
|
enableRouteGeneration?: boolean | undefined;
|
|
81
83
|
routeFilePrefix?: string | undefined;
|
|
82
84
|
routeFileIgnorePattern?: string | undefined;
|
|
85
|
+
autoCodeSplitting?: boolean | undefined;
|
|
83
86
|
experimental?: {
|
|
84
87
|
enableCodeSplitting?: boolean | undefined;
|
|
85
88
|
} | undefined;
|
package/dist/esm/webpack.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createWebpackPlugin } from "unplugin";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { unpluginRouterGeneratorFactory } from "./router-generator.js";
|
|
5
|
-
import { unpluginRouterComposedFactory } from "./composed.js";
|
|
2
|
+
import { configSchema } from "./core/config.js";
|
|
3
|
+
import { unpluginRouterCodeSplitterFactory } from "./core/router-code-splitter-plugin.js";
|
|
4
|
+
import { unpluginRouterGeneratorFactory } from "./core/router-generator-plugin.js";
|
|
5
|
+
import { unpluginRouterComposedFactory } from "./core/router-composed-plugin.js";
|
|
6
6
|
const TanStackRouterGeneratorWebpack = /* @__PURE__ */ createWebpackPlugin(
|
|
7
7
|
unpluginRouterGeneratorFactory
|
|
8
8
|
);
|
package/dist/esm/webpack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webpack.js","sources":["../../src/webpack.ts"],"sourcesContent":["import { createWebpackPlugin } from 'unplugin'\nimport {
|
|
1
|
+
{"version":3,"file":"webpack.js","sources":["../../src/webpack.ts"],"sourcesContent":["import { createWebpackPlugin } from 'unplugin'\n\nimport { configSchema } from './core/config'\nimport { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin'\nimport { unpluginRouterGeneratorFactory } from './core/router-generator-plugin'\nimport { unpluginRouterComposedFactory } from './core/router-composed-plugin'\nimport type { Config } from './core/config'\n\n/**\n * @example\n * ```ts\n * export default {\n * // ...\n * plugins: [TanStackRouterGeneratorWebpack()],\n * }\n * ```\n */\nconst TanStackRouterGeneratorWebpack = /* #__PURE__ */ createWebpackPlugin(\n unpluginRouterGeneratorFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default {\n * // ...\n * plugins: [TanStackRouterCodeSplitterWebpack()],\n * }\n * ```\n */\nconst TanStackRouterCodeSplitterWebpack = /* #__PURE__ */ createWebpackPlugin(\n unpluginRouterCodeSplitterFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default {\n * // ...\n * plugins: [TanStackRouterWebpack()],\n * }\n * ```\n */\nconst TanStackRouterWebpack = /* #__PURE__ */ createWebpackPlugin(\n unpluginRouterComposedFactory,\n)\n\nexport default TanStackRouterWebpack\nexport {\n configSchema,\n TanStackRouterWebpack,\n TanStackRouterGeneratorWebpack,\n TanStackRouterCodeSplitterWebpack,\n}\nexport type { Config }\n"],"names":[],"mappings":";;;;;AAiBA,MAAM,iCAAiD;AAAA,EACrD;AACF;AAWA,MAAM,oCAAoD;AAAA,EACxD;AACF;AAWA,MAAM,wBAAwC;AAAA,EAC5C;AACF;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/router-plugin",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.49.3",
|
|
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.
|
|
95
|
+
"@tanstack/router-generator": "^1.49.3"
|
|
96
96
|
},
|
|
97
97
|
"peerDependencies": {
|
|
98
98
|
"@rsbuild/core": ">=1.0.0",
|
|
@@ -4,7 +4,7 @@ import _generate from '@babel/generator'
|
|
|
4
4
|
import * as template from '@babel/template'
|
|
5
5
|
import { deadCodeElimination } from 'babel-dead-code-elimination'
|
|
6
6
|
|
|
7
|
-
import { splitPrefix } from '
|
|
7
|
+
import { splitPrefix } from '../constants'
|
|
8
8
|
import { parseAst } from './ast'
|
|
9
9
|
import type { ParseAstOptions } from './ast'
|
|
10
10
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { isAbsolute, join } from 'node:path'
|
|
2
2
|
import { fileURLToPath, pathToFileURL } from 'node:url'
|
|
3
3
|
|
|
4
|
+
import { getConfig } from './config'
|
|
4
5
|
import {
|
|
5
6
|
compileCodeSplitReferenceRoute,
|
|
6
7
|
compileCodeSplitVirtualRoute,
|
|
7
|
-
} from './compilers'
|
|
8
|
-
import { getConfig } from './config'
|
|
8
|
+
} from './code-splitter/compilers'
|
|
9
9
|
import { splitPrefix } from './constants'
|
|
10
10
|
|
|
11
11
|
import type { Config } from './config'
|
|
@@ -107,7 +107,7 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
|
|
|
107
107
|
enforce: 'pre',
|
|
108
108
|
|
|
109
109
|
resolveId(source) {
|
|
110
|
-
if (!userConfig.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
219
|
+
userConfig.autoCodeSplitting &&
|
|
219
220
|
compiler.options.mode === 'production'
|
|
220
221
|
) {
|
|
221
|
-
compiler.hooks.done.tap(PLUGIN_NAME, (
|
|
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
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { unpluginRouterGeneratorFactory } from './router-generator'
|
|
2
|
-
import { unpluginRouterCodeSplitterFactory } from './code-splitter'
|
|
1
|
+
import { unpluginRouterGeneratorFactory } from './router-generator-plugin'
|
|
2
|
+
import { unpluginRouterCodeSplitterFactory } from './router-code-splitter-plugin'
|
|
3
3
|
|
|
4
4
|
import type { Config } from './config'
|
|
5
5
|
import type { UnpluginFactory } from 'unplugin'
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export type { Config } from './config'
|
|
1
|
+
export { configSchema } from './core/config'
|
|
2
|
+
export { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin'
|
|
3
|
+
export { unpluginRouterGeneratorFactory } from './core/router-generator-plugin'
|
|
4
|
+
export type { Config } from './core/config'
|
package/src/rspack.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { createRspackPlugin } from 'unplugin'
|
|
2
|
-
|
|
3
|
-
import { configSchema } from './config'
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
2
|
+
|
|
3
|
+
import { configSchema } from './core/config'
|
|
4
|
+
import { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin'
|
|
5
|
+
import { unpluginRouterGeneratorFactory } from './core/router-generator-plugin'
|
|
6
|
+
import { unpluginRouterComposedFactory } from './core/router-composed-plugin'
|
|
7
|
+
import type { Config } from './core/config'
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* @example
|
package/src/vite.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { createVitePlugin } from 'unplugin'
|
|
2
|
-
import { unpluginRouterCodeSplitterFactory } from './code-splitter'
|
|
3
|
-
import { configSchema } from './config'
|
|
4
|
-
import { unpluginRouterGeneratorFactory } from './router-generator'
|
|
5
|
-
import { unpluginRouterComposedFactory } from './composed'
|
|
6
2
|
|
|
7
|
-
import
|
|
3
|
+
import { configSchema } from './core/config'
|
|
4
|
+
import { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin'
|
|
5
|
+
import { unpluginRouterGeneratorFactory } from './core/router-generator-plugin'
|
|
6
|
+
import { unpluginRouterComposedFactory } from './core/router-composed-plugin'
|
|
7
|
+
|
|
8
|
+
import type { Config } from './core/config'
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* @example
|
package/src/webpack.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { createWebpackPlugin } from 'unplugin'
|
|
2
|
-
|
|
3
|
-
import { configSchema } from './config'
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
2
|
+
|
|
3
|
+
import { configSchema } from './core/config'
|
|
4
|
+
import { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin'
|
|
5
|
+
import { unpluginRouterGeneratorFactory } from './core/router-generator-plugin'
|
|
6
|
+
import { unpluginRouterComposedFactory } from './core/router-composed-plugin'
|
|
7
|
+
import type { Config } from './core/config'
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* @example
|
package/dist/cjs/ast.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ast.cjs","sources":["../../src/ast.ts"],"sourcesContent":["import * as babel from '@babel/core'\nimport '@babel/parser'\n// @ts-expect-error\nimport _babelPluginJsx from '@babel/plugin-syntax-jsx'\n// @ts-expect-error\nimport _babelPluginTypeScript from '@babel/plugin-syntax-typescript'\n\nlet babelPluginJsx = _babelPluginJsx\nlet babelPluginTypeScript = _babelPluginTypeScript\n\nif (babelPluginJsx.default) {\n babelPluginJsx = babelPluginJsx.default\n}\n\nif (babelPluginTypeScript.default) {\n babelPluginTypeScript = babelPluginTypeScript.default\n}\n\nexport type ParseAstOptions = {\n code: string\n filename: string\n root: string\n}\n\nexport function parseAst(opts: ParseAstOptions) {\n const babelPlugins: Array<babel.PluginItem> = [\n babelPluginJsx,\n [\n babelPluginTypeScript,\n {\n isTSX: true,\n },\n ],\n ]\n\n return babel.parse(opts.code, {\n plugins: babelPlugins,\n root: opts.root,\n filename: opts.filename,\n sourceMaps: true,\n sourceType: 'module',\n })\n}\n"],"names":["babel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAI,iBAAiB;AACrB,IAAI,wBAAwB;AAE5B,IAAI,eAAe,SAAS;AAC1B,mBAAiB,eAAe;AAClC;AAEA,IAAI,sBAAsB,SAAS;AACjC,0BAAwB,sBAAsB;AAChD;AAQO,SAAS,SAAS,MAAuB;AAC9C,QAAM,eAAwC;AAAA,IAC5C;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,QACE,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EAAA;AAGK,SAAAA,iBAAM,MAAM,KAAK,MAAM;AAAA,IAC5B,SAAS;AAAA,IACT,MAAM,KAAK;AAAA,IACX,UAAU,KAAK;AAAA,IACf,YAAY;AAAA,IACZ,YAAY;AAAA,EAAA,CACb;AACH;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"code-splitter.cjs","sources":["../../src/code-splitter.ts"],"sourcesContent":["import { isAbsolute, join } from 'node:path'\nimport { fileURLToPath, pathToFileURL } from 'node:url'\n\nimport {\n compileCodeSplitReferenceRoute,\n compileCodeSplitVirtualRoute,\n} from './compilers'\nimport { getConfig } from './config'\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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"}
|