@tanstack/router-plugin 1.45.3 → 1.45.8
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/code-splitter.cjs +8 -8
- package/dist/cjs/code-splitter.cjs.map +1 -1
- package/dist/cjs/config.cjs +3 -6
- package/dist/cjs/config.cjs.map +1 -1
- package/dist/cjs/config.d.cts +11 -11
- package/dist/cjs/router-generator.cjs +4 -4
- package/dist/cjs/router-generator.cjs.map +1 -1
- package/dist/cjs/rspack.d.cts +6 -6
- package/dist/cjs/vite.d.cts +6 -6
- package/dist/cjs/webpack.d.cts +6 -6
- package/dist/esm/code-splitter.js +8 -8
- package/dist/esm/code-splitter.js.map +1 -1
- package/dist/esm/config.d.ts +11 -11
- package/dist/esm/config.js +3 -6
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/router-generator.js +4 -4
- package/dist/esm/router-generator.js.map +1 -1
- package/dist/esm/rspack.d.ts +6 -6
- package/dist/esm/vite.d.ts +6 -6
- package/dist/esm/webpack.d.ts +6 -6
- package/package.json +6 -6
- package/src/code-splitter.ts +8 -8
- package/src/config.ts +2 -10
- package/src/router-generator.ts +4 -4
|
@@ -37,7 +37,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
37
37
|
const debug = Boolean(process.env.TSR_VITE_DEBUG);
|
|
38
38
|
let ROOT = process.cwd();
|
|
39
39
|
let userConfig = options;
|
|
40
|
-
const handleSplittingFile =
|
|
40
|
+
const handleSplittingFile = (code, id) => {
|
|
41
41
|
if (debug) console.info("Splitting route: ", id);
|
|
42
42
|
const compiledVirtualRoute = compilers.compileCodeSplitVirtualRoute({
|
|
43
43
|
code,
|
|
@@ -53,7 +53,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
53
53
|
if (debug) console.info("");
|
|
54
54
|
return compiledVirtualRoute;
|
|
55
55
|
};
|
|
56
|
-
const handleCompilingFile =
|
|
56
|
+
const handleCompilingFile = (code, id) => {
|
|
57
57
|
if (debug) console.info("Handling createRoute: ", id);
|
|
58
58
|
const compiledReferenceRoute = compilers.compileCodeSplitReferenceRoute({
|
|
59
59
|
code,
|
|
@@ -120,12 +120,12 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
120
120
|
return false;
|
|
121
121
|
},
|
|
122
122
|
vite: {
|
|
123
|
-
|
|
123
|
+
configResolved(config$1) {
|
|
124
124
|
ROOT = config$1.root;
|
|
125
|
-
userConfig =
|
|
125
|
+
userConfig = config.getConfig(options, ROOT);
|
|
126
126
|
}
|
|
127
127
|
},
|
|
128
|
-
|
|
128
|
+
rspack(compiler) {
|
|
129
129
|
ROOT = process.cwd();
|
|
130
130
|
compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {
|
|
131
131
|
self.normalModuleFactory.hooks.beforeResolve.tap(
|
|
@@ -140,9 +140,9 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
140
140
|
}
|
|
141
141
|
);
|
|
142
142
|
});
|
|
143
|
-
userConfig =
|
|
143
|
+
userConfig = config.getConfig(options, ROOT);
|
|
144
144
|
},
|
|
145
|
-
|
|
145
|
+
webpack(compiler) {
|
|
146
146
|
var _a;
|
|
147
147
|
ROOT = process.cwd();
|
|
148
148
|
compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {
|
|
@@ -158,7 +158,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
158
158
|
}
|
|
159
159
|
);
|
|
160
160
|
});
|
|
161
|
-
userConfig =
|
|
161
|
+
userConfig = config.getConfig(options, ROOT);
|
|
162
162
|
if (((_a = userConfig.experimental) == null ? void 0 : _a.enableCodeSplitting) && compiler.options.mode === "production") {
|
|
163
163
|
compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {
|
|
164
164
|
console.info("✅ " + PLUGIN_NAME + ": code-splitting done!");
|
|
@@ -1 +1 @@
|
|
|
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 = async (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 = async (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 async 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 await 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 await 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 async configResolved(config) {\n ROOT = config.root\n userConfig = await getConfig(options, ROOT)\n },\n },\n\n async 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) => {\n if (resolveData.request.includes(JoinedSplitPrefix)) {\n resolveData.request = resolveData.request.replace(\n JoinedSplitPrefix,\n '',\n )\n }\n },\n )\n })\n\n userConfig = await getConfig(options, ROOT)\n },\n\n async 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) => {\n if (resolveData.request.includes(JoinedSplitPrefix)) {\n resolveData.request = resolveData.request.replace(\n JoinedSplitPrefix,\n '',\n )\n }\n },\n )\n })\n\n userConfig = await 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":"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 async 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 await 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 await 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) => {\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) => {\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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"}
|
package/dist/cjs/config.cjs
CHANGED
|
@@ -3,13 +3,10 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const zod = require("zod");
|
|
4
4
|
const routerGenerator = require("@tanstack/router-generator");
|
|
5
5
|
const configSchema = routerGenerator.configSchema.extend({
|
|
6
|
-
enableRouteGeneration: zod.z.boolean().optional()
|
|
7
|
-
experimental: zod.z.object({
|
|
8
|
-
enableCodeSplitting: zod.z.boolean().optional()
|
|
9
|
-
}).optional()
|
|
6
|
+
enableRouteGeneration: zod.z.boolean().optional()
|
|
10
7
|
});
|
|
11
|
-
const getConfig =
|
|
12
|
-
const config =
|
|
8
|
+
const getConfig = (inlineConfig, root) => {
|
|
9
|
+
const config = routerGenerator.getConfig(inlineConfig, root);
|
|
13
10
|
return configSchema.parse({ ...config, ...inlineConfig });
|
|
14
11
|
};
|
|
15
12
|
exports.configSchema = configSchema;
|
package/dist/cjs/config.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.cjs","sources":["../../src/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
|
|
1
|
+
{"version":3,"file":"config.cjs","sources":["../../src/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","z","getGeneratorConfig"],"mappings":";;;;AAMa,MAAA,eAAeA,6BAAsB,OAAO;AAAA,EACvD,uBAAuBC,IAAA,EAAE,QAAQ,EAAE,SAAS;AAC9C,CAAC;AAEY,MAAA,YAAY,CAAC,cAA+B,SAAiB;AAClE,QAAA,SAASC,gBAAAA,UAAmB,cAAc,IAAI;AAEpD,SAAO,aAAa,MAAM,EAAE,GAAG,QAAQ,GAAG,cAAc;AAC1D;;;"}
|
package/dist/cjs/config.d.cts
CHANGED
|
@@ -13,8 +13,6 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
13
13
|
disableLogging: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
14
14
|
routeTreeFileHeader: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
15
15
|
routeTreeFileFooter: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
16
|
-
}, {
|
|
17
|
-
enableRouteGeneration: z.ZodOptional<z.ZodBoolean>;
|
|
18
16
|
experimental: z.ZodOptional<z.ZodObject<{
|
|
19
17
|
enableCodeSplitting: z.ZodOptional<z.ZodBoolean>;
|
|
20
18
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -22,6 +20,8 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
22
20
|
}, {
|
|
23
21
|
enableCodeSplitting?: boolean | undefined;
|
|
24
22
|
}>>;
|
|
23
|
+
}, {
|
|
24
|
+
enableRouteGeneration: z.ZodOptional<z.ZodBoolean>;
|
|
25
25
|
}>, "strip", z.ZodTypeAny, {
|
|
26
26
|
routeFileIgnorePrefix: string;
|
|
27
27
|
routesDirectory: string;
|
|
@@ -34,16 +34,13 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
34
34
|
routeTreeFileHeader: string[];
|
|
35
35
|
routeTreeFileFooter: string[];
|
|
36
36
|
enableRouteGeneration?: boolean | undefined;
|
|
37
|
-
experimental?: {
|
|
38
|
-
enableCodeSplitting?: boolean | undefined;
|
|
39
|
-
} | undefined;
|
|
40
37
|
routeFilePrefix?: string | undefined;
|
|
41
38
|
routeFileIgnorePattern?: string | undefined;
|
|
42
|
-
}, {
|
|
43
|
-
enableRouteGeneration?: boolean | undefined;
|
|
44
39
|
experimental?: {
|
|
45
40
|
enableCodeSplitting?: boolean | undefined;
|
|
46
41
|
} | undefined;
|
|
42
|
+
}, {
|
|
43
|
+
enableRouteGeneration?: boolean | undefined;
|
|
47
44
|
routeFilePrefix?: string | undefined;
|
|
48
45
|
routeFileIgnorePrefix?: string | undefined;
|
|
49
46
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -56,8 +53,11 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
56
53
|
disableLogging?: boolean | undefined;
|
|
57
54
|
routeTreeFileHeader?: string[] | undefined;
|
|
58
55
|
routeTreeFileFooter?: string[] | undefined;
|
|
56
|
+
experimental?: {
|
|
57
|
+
enableCodeSplitting?: boolean | undefined;
|
|
58
|
+
} | undefined;
|
|
59
59
|
}>;
|
|
60
|
-
export declare const getConfig: (inlineConfig: Partial<Config>, root: string) =>
|
|
60
|
+
export declare const getConfig: (inlineConfig: Partial<Config>, root: string) => {
|
|
61
61
|
routeFileIgnorePrefix: string;
|
|
62
62
|
routesDirectory: string;
|
|
63
63
|
generatedRouteTree: string;
|
|
@@ -69,10 +69,10 @@ export declare const getConfig: (inlineConfig: Partial<Config>, root: string) =>
|
|
|
69
69
|
routeTreeFileHeader: string[];
|
|
70
70
|
routeTreeFileFooter: string[];
|
|
71
71
|
enableRouteGeneration?: boolean | undefined;
|
|
72
|
+
routeFilePrefix?: string | undefined;
|
|
73
|
+
routeFileIgnorePattern?: string | undefined;
|
|
72
74
|
experimental?: {
|
|
73
75
|
enableCodeSplitting?: boolean | undefined;
|
|
74
76
|
} | undefined;
|
|
75
|
-
|
|
76
|
-
routeFileIgnorePattern?: string | undefined;
|
|
77
|
-
}>;
|
|
77
|
+
};
|
|
78
78
|
export type Config = z.infer<typeof configSchema>;
|
|
@@ -55,7 +55,7 @@ const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
|
55
55
|
const handleFile = async (file, event) => {
|
|
56
56
|
const filePath = node_path.normalize(file);
|
|
57
57
|
if (filePath === node_path.join(ROOT, constants.CONFIG_FILE_NAME)) {
|
|
58
|
-
userConfig =
|
|
58
|
+
userConfig = config.getConfig(options, ROOT);
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
61
61
|
if (event === "update" && filePath === node_path.resolve(userConfig.generatedRouteTree)) {
|
|
@@ -81,12 +81,12 @@ const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
|
81
81
|
vite: {
|
|
82
82
|
async configResolved(config$1) {
|
|
83
83
|
ROOT = config$1.root;
|
|
84
|
-
userConfig =
|
|
84
|
+
userConfig = config.getConfig(options, ROOT);
|
|
85
85
|
await run(generate);
|
|
86
86
|
}
|
|
87
87
|
},
|
|
88
88
|
async rspack(compiler) {
|
|
89
|
-
userConfig =
|
|
89
|
+
userConfig = config.getConfig(options, ROOT);
|
|
90
90
|
if (compiler.options.mode === "production") {
|
|
91
91
|
await run(generate);
|
|
92
92
|
} else {
|
|
@@ -98,7 +98,7 @@ const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
|
98
98
|
}
|
|
99
99
|
},
|
|
100
100
|
async webpack(compiler) {
|
|
101
|
-
userConfig =
|
|
101
|
+
userConfig = config.getConfig(options, ROOT);
|
|
102
102
|
if (compiler.options.mode === "production") {
|
|
103
103
|
await run(generate);
|
|
104
104
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-generator.cjs","sources":["../../src/router-generator.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 =
|
|
1
|
+
{"version":3,"file":"router-generator.cjs","sources":["../../src/router-generator.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":["isAbsolute","join","generator","normalize","CONFIG_FILE_NAME","getConfig","resolve","config"],"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,WAAAA,qBAAW,WAAW,eAAe,IACxC,WAAW,kBACXC,UAAAA,KAAK,MAAM,WAAW,eAAe;AAAA,EAAA;AAG3C,QAAM,WAAW,YAAY;AAC3B,QAAI,aAAa;AACf;AAAA,IACF;AAEA,YAAQ,IAAI;AAER,QAAA;AACF,YAAMC,gBAAAA,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,WAAWC,oBAAU,IAAI;AAE/B,QAAI,aAAaF,UAAAA,KAAK,MAAMG,UAAgB,gBAAA,GAAG;AAChC,mBAAAC,OAAA,UAAU,SAAS,IAAI;AACpC;AAAA,IACF;AAEA,QACE,UAAU,YACV,aAAaC,UAAAA,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,eAAeC,UAAQ;AAC3B,eAAOA,SAAO;AACD,qBAAAF,OAAA,UAAU,SAAS,IAAI;AAEpC,cAAM,IAAI,QAAQ;AAAA,MACpB;AAAA,IACF;AAAA,IACA,MAAM,OAAO,UAAU;AACR,mBAAAA,OAAA,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,mBAAAA,OAAA,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/cjs/rspack.d.cts
CHANGED
|
@@ -25,11 +25,11 @@ declare const TanStackRouterGeneratorRspack: (options?: Partial<{
|
|
|
25
25
|
routeTreeFileHeader: string[];
|
|
26
26
|
routeTreeFileFooter: string[];
|
|
27
27
|
enableRouteGeneration?: boolean | undefined;
|
|
28
|
+
routeFilePrefix?: string | undefined;
|
|
29
|
+
routeFileIgnorePattern?: string | undefined;
|
|
28
30
|
experimental?: {
|
|
29
31
|
enableCodeSplitting?: boolean | undefined;
|
|
30
32
|
} | undefined;
|
|
31
|
-
routeFilePrefix?: string | undefined;
|
|
32
|
-
routeFileIgnorePattern?: string | undefined;
|
|
33
33
|
}> | undefined) => _rspack_core_dist_config_zod.RspackPluginInstance;
|
|
34
34
|
/**
|
|
35
35
|
* @example
|
|
@@ -56,11 +56,11 @@ declare const TanStackRouterCodeSplitterRspack: (options?: Partial<{
|
|
|
56
56
|
routeTreeFileHeader: string[];
|
|
57
57
|
routeTreeFileFooter: string[];
|
|
58
58
|
enableRouteGeneration?: boolean | undefined;
|
|
59
|
+
routeFilePrefix?: string | undefined;
|
|
60
|
+
routeFileIgnorePattern?: string | undefined;
|
|
59
61
|
experimental?: {
|
|
60
62
|
enableCodeSplitting?: boolean | undefined;
|
|
61
63
|
} | undefined;
|
|
62
|
-
routeFilePrefix?: string | undefined;
|
|
63
|
-
routeFileIgnorePattern?: string | undefined;
|
|
64
64
|
}> | undefined) => _rspack_core_dist_config_zod.RspackPluginInstance;
|
|
65
65
|
/**
|
|
66
66
|
* @example
|
|
@@ -87,11 +87,11 @@ declare const TanStackRouterRspack: (options?: Partial<{
|
|
|
87
87
|
routeTreeFileHeader: string[];
|
|
88
88
|
routeTreeFileFooter: string[];
|
|
89
89
|
enableRouteGeneration?: boolean | undefined;
|
|
90
|
+
routeFilePrefix?: string | undefined;
|
|
91
|
+
routeFileIgnorePattern?: string | undefined;
|
|
90
92
|
experimental?: {
|
|
91
93
|
enableCodeSplitting?: boolean | undefined;
|
|
92
94
|
} | undefined;
|
|
93
|
-
routeFilePrefix?: string | undefined;
|
|
94
|
-
routeFileIgnorePattern?: string | undefined;
|
|
95
95
|
}> | undefined) => _rspack_core_dist_config_zod.RspackPluginInstance;
|
|
96
96
|
export default TanStackRouterRspack;
|
|
97
97
|
export { configSchema, TanStackRouterRspack, TanStackRouterGeneratorRspack, TanStackRouterCodeSplitterRspack, };
|
package/dist/cjs/vite.d.cts
CHANGED
|
@@ -21,11 +21,11 @@ declare const TanStackRouterGeneratorVite: (options?: Partial<{
|
|
|
21
21
|
routeTreeFileHeader: string[];
|
|
22
22
|
routeTreeFileFooter: string[];
|
|
23
23
|
enableRouteGeneration?: boolean | undefined;
|
|
24
|
+
routeFilePrefix?: string | undefined;
|
|
25
|
+
routeFileIgnorePattern?: string | undefined;
|
|
24
26
|
experimental?: {
|
|
25
27
|
enableCodeSplitting?: boolean | undefined;
|
|
26
28
|
} | undefined;
|
|
27
|
-
routeFilePrefix?: string | undefined;
|
|
28
|
-
routeFileIgnorePattern?: string | undefined;
|
|
29
29
|
}> | undefined) => import('vite').Plugin<any> | import('vite').Plugin<any>[];
|
|
30
30
|
/**
|
|
31
31
|
* @example
|
|
@@ -48,11 +48,11 @@ declare const TanStackRouterCodeSplitterVite: (options?: Partial<{
|
|
|
48
48
|
routeTreeFileHeader: string[];
|
|
49
49
|
routeTreeFileFooter: string[];
|
|
50
50
|
enableRouteGeneration?: boolean | undefined;
|
|
51
|
+
routeFilePrefix?: string | undefined;
|
|
52
|
+
routeFileIgnorePattern?: string | undefined;
|
|
51
53
|
experimental?: {
|
|
52
54
|
enableCodeSplitting?: boolean | undefined;
|
|
53
55
|
} | undefined;
|
|
54
|
-
routeFilePrefix?: string | undefined;
|
|
55
|
-
routeFileIgnorePattern?: string | undefined;
|
|
56
56
|
}> | undefined) => import('vite').Plugin<any> | import('vite').Plugin<any>[];
|
|
57
57
|
/**
|
|
58
58
|
* @example
|
|
@@ -75,11 +75,11 @@ declare const TanStackRouterVite: (options?: Partial<{
|
|
|
75
75
|
routeTreeFileHeader: string[];
|
|
76
76
|
routeTreeFileFooter: string[];
|
|
77
77
|
enableRouteGeneration?: boolean | undefined;
|
|
78
|
+
routeFilePrefix?: string | undefined;
|
|
79
|
+
routeFileIgnorePattern?: string | undefined;
|
|
78
80
|
experimental?: {
|
|
79
81
|
enableCodeSplitting?: boolean | undefined;
|
|
80
82
|
} | undefined;
|
|
81
|
-
routeFilePrefix?: string | undefined;
|
|
82
|
-
routeFileIgnorePattern?: string | undefined;
|
|
83
83
|
}> | undefined) => import('vite').Plugin<any> | import('vite').Plugin<any>[];
|
|
84
84
|
export default TanStackRouterVite;
|
|
85
85
|
export { configSchema, TanStackRouterGeneratorVite, TanStackRouterCodeSplitterVite, TanStackRouterVite, };
|
package/dist/cjs/webpack.d.cts
CHANGED
|
@@ -21,11 +21,11 @@ declare const TanStackRouterGeneratorWebpack: (options?: Partial<{
|
|
|
21
21
|
routeTreeFileHeader: string[];
|
|
22
22
|
routeTreeFileFooter: string[];
|
|
23
23
|
enableRouteGeneration?: boolean | undefined;
|
|
24
|
+
routeFilePrefix?: string | undefined;
|
|
25
|
+
routeFileIgnorePattern?: string | undefined;
|
|
24
26
|
experimental?: {
|
|
25
27
|
enableCodeSplitting?: boolean | undefined;
|
|
26
28
|
} | undefined;
|
|
27
|
-
routeFilePrefix?: string | undefined;
|
|
28
|
-
routeFileIgnorePattern?: string | undefined;
|
|
29
29
|
}> | undefined) => import('unplugin').WebpackPluginInstance;
|
|
30
30
|
/**
|
|
31
31
|
* @example
|
|
@@ -48,11 +48,11 @@ declare const TanStackRouterCodeSplitterWebpack: (options?: Partial<{
|
|
|
48
48
|
routeTreeFileHeader: string[];
|
|
49
49
|
routeTreeFileFooter: string[];
|
|
50
50
|
enableRouteGeneration?: boolean | undefined;
|
|
51
|
+
routeFilePrefix?: string | undefined;
|
|
52
|
+
routeFileIgnorePattern?: string | undefined;
|
|
51
53
|
experimental?: {
|
|
52
54
|
enableCodeSplitting?: boolean | undefined;
|
|
53
55
|
} | undefined;
|
|
54
|
-
routeFilePrefix?: string | undefined;
|
|
55
|
-
routeFileIgnorePattern?: string | undefined;
|
|
56
56
|
}> | undefined) => import('unplugin').WebpackPluginInstance;
|
|
57
57
|
/**
|
|
58
58
|
* @example
|
|
@@ -75,11 +75,11 @@ declare const TanStackRouterWebpack: (options?: Partial<{
|
|
|
75
75
|
routeTreeFileHeader: string[];
|
|
76
76
|
routeTreeFileFooter: string[];
|
|
77
77
|
enableRouteGeneration?: boolean | undefined;
|
|
78
|
+
routeFilePrefix?: string | undefined;
|
|
79
|
+
routeFileIgnorePattern?: string | undefined;
|
|
78
80
|
experimental?: {
|
|
79
81
|
enableCodeSplitting?: boolean | undefined;
|
|
80
82
|
} | undefined;
|
|
81
|
-
routeFilePrefix?: string | undefined;
|
|
82
|
-
routeFileIgnorePattern?: string | undefined;
|
|
83
83
|
}> | undefined) => import('unplugin').WebpackPluginInstance;
|
|
84
84
|
export default TanStackRouterWebpack;
|
|
85
85
|
export { configSchema, TanStackRouterWebpack, TanStackRouterGeneratorWebpack, TanStackRouterCodeSplitterWebpack, };
|
|
@@ -35,7 +35,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
35
35
|
const debug = Boolean(process.env.TSR_VITE_DEBUG);
|
|
36
36
|
let ROOT = process.cwd();
|
|
37
37
|
let userConfig = options;
|
|
38
|
-
const handleSplittingFile =
|
|
38
|
+
const handleSplittingFile = (code, id) => {
|
|
39
39
|
if (debug) console.info("Splitting route: ", id);
|
|
40
40
|
const compiledVirtualRoute = compileCodeSplitVirtualRoute({
|
|
41
41
|
code,
|
|
@@ -51,7 +51,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
51
51
|
if (debug) console.info("");
|
|
52
52
|
return compiledVirtualRoute;
|
|
53
53
|
};
|
|
54
|
-
const handleCompilingFile =
|
|
54
|
+
const handleCompilingFile = (code, id) => {
|
|
55
55
|
if (debug) console.info("Handling createRoute: ", id);
|
|
56
56
|
const compiledReferenceRoute = compileCodeSplitReferenceRoute({
|
|
57
57
|
code,
|
|
@@ -118,12 +118,12 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
118
118
|
return false;
|
|
119
119
|
},
|
|
120
120
|
vite: {
|
|
121
|
-
|
|
121
|
+
configResolved(config) {
|
|
122
122
|
ROOT = config.root;
|
|
123
|
-
userConfig =
|
|
123
|
+
userConfig = getConfig(options, ROOT);
|
|
124
124
|
}
|
|
125
125
|
},
|
|
126
|
-
|
|
126
|
+
rspack(compiler) {
|
|
127
127
|
ROOT = process.cwd();
|
|
128
128
|
compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {
|
|
129
129
|
self.normalModuleFactory.hooks.beforeResolve.tap(
|
|
@@ -138,9 +138,9 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
138
138
|
}
|
|
139
139
|
);
|
|
140
140
|
});
|
|
141
|
-
userConfig =
|
|
141
|
+
userConfig = getConfig(options, ROOT);
|
|
142
142
|
},
|
|
143
|
-
|
|
143
|
+
webpack(compiler) {
|
|
144
144
|
var _a;
|
|
145
145
|
ROOT = process.cwd();
|
|
146
146
|
compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {
|
|
@@ -156,7 +156,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
156
156
|
}
|
|
157
157
|
);
|
|
158
158
|
});
|
|
159
|
-
userConfig =
|
|
159
|
+
userConfig = getConfig(options, ROOT);
|
|
160
160
|
if (((_a = userConfig.experimental) == null ? void 0 : _a.enableCodeSplitting) && compiler.options.mode === "production") {
|
|
161
161
|
compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {
|
|
162
162
|
console.info("✅ " + PLUGIN_NAME + ": code-splitting done!");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-splitter.js","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 = async (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 = async (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 async 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 await 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 await 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 async configResolved(config) {\n ROOT = config.root\n userConfig = await getConfig(options, ROOT)\n },\n },\n\n async 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) => {\n if (resolveData.request.includes(JoinedSplitPrefix)) {\n resolveData.request = resolveData.request.replace(\n JoinedSplitPrefix,\n '',\n )\n }\n },\n )\n })\n\n userConfig = await getConfig(options, ROOT)\n },\n\n async 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) => {\n if (resolveData.request.includes(JoinedSplitPrefix)) {\n resolveData.request = resolveData.request.replace(\n JoinedSplitPrefix,\n '',\n )\n }\n },\n )\n })\n\n userConfig = await 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":";;;;;AAaA,SAAS,gBAAgB,KAAqB;AACrC,SAAA,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAClD;AAEA,SAAS,wBAAwB,UAAkB,iBAAyB;AACpE,QAAA,sBAAsB,WAAW,eAAe,IAClD,kBACA,KAAK,QAAQ,OAAO,eAAe;AAEhC,SAAA,SAAS,WAAW,mBAAmB;AAChD;AASA,MAAM,8BAAiE;AAAA,EACrE;AAAA,IACE,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,OAAO;AAAA,IACP,YAAY,CAAC,MAAM;AAAA,EACrB;AACF;AAEA,MAAM,gCAAgC,MAAM;AAAA,EAC1C,YAAY,gBAA4C,WAAmB;AACzE,UAAM,yBAAyB,eAAe,GAAG,oHAAoH,eAAe,GAAG;AAAA;AAAA;AAAA,kBAGzK,gBAAgB,SAAS,CAAC,4BAA4B,eAAe,KAAK;AAAA,IACxF,eAAe,KAAK;AAAA;AAAA,CAEvB;AAAA,EACC;AACF;AAEA,MAAM,cAAc;AACpB,MAAM,oBAAoB,cAAc;AAEjC,MAAM,oCAET,CAAC,UAAU,IAAI,EAAE,gBAAgB;AACnC,QAAM,QAAQ,QAAQ,QAAQ,IAAI,cAAc;AAE5C,MAAA,OAAe,QAAQ;AAC3B,MAAI,aAAa;AAEX,QAAA,sBAAsB,OAAO,MAAc,OAAe;AAC9D,QAAI,MAAO,SAAQ,KAAK,qBAAqB,EAAE;AAE/C,UAAM,uBAAuB,6BAA6B;AAAA,MACxD;AAAA,MACA,MAAM;AAAA,MACN,UAAU;AAAA,IAAA,CACX;AAEG,QAAA,MAAe,SAAA,KAAK,EAAE;AACtB,QAAA,MAAe,SAAA,KAAK,cAAc;AAClC,QAAA,MAAe,SAAA,KAAK,EAAE;AAC1B,QAAI,MAAO,SAAQ,KAAK,qBAAqB,IAAI;AAC7C,QAAA,MAAe,SAAA,KAAK,EAAE;AACtB,QAAA,MAAe,SAAA,KAAK,EAAE;AACtB,QAAA,MAAe,SAAA,KAAK,EAAE;AAEnB,WAAA;AAAA,EAAA;AAGH,QAAA,sBAAsB,OAAO,MAAc,OAAe;AAC9D,QAAI,MAAO,SAAQ,KAAK,0BAA0B,EAAE;AAEpD,UAAM,yBAAyB,+BAA+B;AAAA,MAC5D;AAAA,MACA,MAAM;AAAA,MACN,UAAU;AAAA,IAAA,CACX;AAEG,QAAA,MAAe,SAAA,KAAK,EAAE;AACtB,QAAA,MAAe,SAAA,KAAK,iBAAiB;AACrC,QAAA,MAAe,SAAA,KAAK,EAAE;AAC1B,QAAI,MAAO,SAAQ,KAAK,uBAAuB,IAAI;AAC/C,QAAA,MAAe,SAAA,KAAK,EAAE;AACtB,QAAA,MAAe,SAAA,KAAK,EAAE;AACtB,QAAA,MAAe,SAAA,KAAK,EAAE;AAEnB,WAAA;AAAA,EAAA;AAGF,SAAA;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IAET,UAAU,QAAQ;;AACZ,UAAA,GAAC,gBAAW,iBAAX,mBAAyB,sBAAqB;AAC1C,eAAA;AAAA,MACT;AAEA,UAAI,OAAO,WAAW,cAAc,GAAG,GAAG;AACxC,eAAO,OAAO,QAAQ,cAAc,KAAK,EAAE;AAAA,MAC7C;AACO,aAAA;AAAA,IACT;AAAA,IAEA,MAAM,UAAU,MAAM,IAAI;;AACpB,UAAA,GAAC,gBAAW,iBAAX,mBAAyB,sBAAqB;AAC1C,eAAA;AAAA,MACT;AAEM,YAAA,MAAM,cAAc,EAAE;AACxB,UAAA,aAAa,OAAO,GAAG;AAC3B,WAAK,cAAc,GAAG,EAAE,QAAQ,OAAO,GAAG;AAEtC,UAAA,GAAG,SAAS,WAAW,GAAG;AACrB,eAAA,MAAM,oBAAoB,MAAM,EAAE;AAAA,MAEzC,WAAA,wBAAwB,IAAI,WAAW,eAAe,MACrD,KAAK,SAAS,cAAc,KAAK,KAAK,SAAS,kBAAkB,IAClE;AACA,mBAAW,kBAAkB,6BAA6B;AACxD,cAAI,CAAC,eAAe,WAAW,SAAS,SAAS,GAAG;AAClD;AAAA,UACF;AAEA,cAAI,KAAK,SAAS,eAAe,UAAU,GAAG;AACtC,kBAAA,IAAI,wBAAwB,gBAAgB,SAAS;AAAA,UAC7D;AAAA,QACF;AAEO,eAAA,MAAM,oBAAoB,MAAM,EAAE;AAAA,MAC3C;AAEO,aAAA;AAAA,IACT;AAAA,IAEA,iBAAiB,aAAa;;AACxB,UAAA,GAAC,gBAAW,iBAAX,mBAAyB,sBAAqB;AAC1C,eAAA;AAAA,MACT;AAEA,UAAI,KAAK;AAEL,UAAA,GAAG,WAAW,iBAAiB,GAAG;AAC/B,aAAA,GAAG,QAAQ,mBAAmB,EAAE;AAAA,MACvC;AAGE,UAAA,wBAAwB,IAAI,WAAW,eAAe,KACtD,GAAG,SAAS,WAAW,GACvB;AACO,eAAA;AAAA,MACT;AACO,aAAA;AAAA,IACT;AAAA,IAEA,MAAM;AAAA,MACJ,MAAM,eAAe,QAAQ;AAC3B,eAAO,OAAO;AACD,qBAAA,MAAM,UAAU,SAAS,IAAI;AAAA,MAC5C;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,UAAU;AACrB,aAAO,QAAQ;AAEf,eAAS,MAAM,cAAc,IAAI,aAAa,CAAC,SAAS;AACjD,aAAA,oBAAoB,MAAM,cAAc;AAAA,UAC3C;AAAA,UACA,CAAC,gBAAgB;AACf,gBAAI,YAAY,QAAQ,SAAS,iBAAiB,GAAG;AACvC,0BAAA,UAAU,YAAY,QAAQ;AAAA,gBACxC;AAAA,gBACA;AAAA,cAAA;AAAA,YAEJ;AAAA,UACF;AAAA,QAAA;AAAA,MACF,CACD;AAEY,mBAAA,MAAM,UAAU,SAAS,IAAI;AAAA,IAC5C;AAAA,IAEA,MAAM,QAAQ,UAAU;;AACtB,aAAO,QAAQ;AAEf,eAAS,MAAM,cAAc,IAAI,aAAa,CAAC,SAAS;AACjD,aAAA,oBAAoB,MAAM,cAAc;AAAA,UAC3C;AAAA,UACA,CAAC,gBAAgB;AACf,gBAAI,YAAY,QAAQ,SAAS,iBAAiB,GAAG;AACvC,0BAAA,UAAU,YAAY,QAAQ;AAAA,gBACxC;AAAA,gBACA;AAAA,cAAA;AAAA,YAEJ;AAAA,UACF;AAAA,QAAA;AAAA,MACF,CACD;AAEY,mBAAA,MAAM,UAAU,SAAS,IAAI;AAE1C,YACE,gBAAW,iBAAX,mBAAyB,wBACzB,SAAS,QAAQ,SAAS,cAC1B;AACA,iBAAS,MAAM,KAAK,IAAI,aAAa,CAAC,UAAU;AACtC,kBAAA,KAAK,OAAO,cAAc,wBAAwB;AAC1D,qBAAW,MAAM;AACf,oBAAQ,KAAK,CAAC;AAAA,UAAA,CACf;AAAA,QAAA,CACF;AAAA,MACH;AAAA,IACF;AAAA,EAAA;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"code-splitter.js","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 async 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 await 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 await 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) => {\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) => {\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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"}
|
package/dist/esm/config.d.ts
CHANGED
|
@@ -13,8 +13,6 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
13
13
|
disableLogging: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
14
14
|
routeTreeFileHeader: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
15
15
|
routeTreeFileFooter: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
16
|
-
}, {
|
|
17
|
-
enableRouteGeneration: z.ZodOptional<z.ZodBoolean>;
|
|
18
16
|
experimental: z.ZodOptional<z.ZodObject<{
|
|
19
17
|
enableCodeSplitting: z.ZodOptional<z.ZodBoolean>;
|
|
20
18
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -22,6 +20,8 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
22
20
|
}, {
|
|
23
21
|
enableCodeSplitting?: boolean | undefined;
|
|
24
22
|
}>>;
|
|
23
|
+
}, {
|
|
24
|
+
enableRouteGeneration: z.ZodOptional<z.ZodBoolean>;
|
|
25
25
|
}>, "strip", z.ZodTypeAny, {
|
|
26
26
|
routeFileIgnorePrefix: string;
|
|
27
27
|
routesDirectory: string;
|
|
@@ -34,16 +34,13 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
34
34
|
routeTreeFileHeader: string[];
|
|
35
35
|
routeTreeFileFooter: string[];
|
|
36
36
|
enableRouteGeneration?: boolean | undefined;
|
|
37
|
-
experimental?: {
|
|
38
|
-
enableCodeSplitting?: boolean | undefined;
|
|
39
|
-
} | undefined;
|
|
40
37
|
routeFilePrefix?: string | undefined;
|
|
41
38
|
routeFileIgnorePattern?: string | undefined;
|
|
42
|
-
}, {
|
|
43
|
-
enableRouteGeneration?: boolean | undefined;
|
|
44
39
|
experimental?: {
|
|
45
40
|
enableCodeSplitting?: boolean | undefined;
|
|
46
41
|
} | undefined;
|
|
42
|
+
}, {
|
|
43
|
+
enableRouteGeneration?: boolean | undefined;
|
|
47
44
|
routeFilePrefix?: string | undefined;
|
|
48
45
|
routeFileIgnorePrefix?: string | undefined;
|
|
49
46
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -56,8 +53,11 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
56
53
|
disableLogging?: boolean | undefined;
|
|
57
54
|
routeTreeFileHeader?: string[] | undefined;
|
|
58
55
|
routeTreeFileFooter?: string[] | undefined;
|
|
56
|
+
experimental?: {
|
|
57
|
+
enableCodeSplitting?: boolean | undefined;
|
|
58
|
+
} | undefined;
|
|
59
59
|
}>;
|
|
60
|
-
export declare const getConfig: (inlineConfig: Partial<Config>, root: string) =>
|
|
60
|
+
export declare const getConfig: (inlineConfig: Partial<Config>, root: string) => {
|
|
61
61
|
routeFileIgnorePrefix: string;
|
|
62
62
|
routesDirectory: string;
|
|
63
63
|
generatedRouteTree: string;
|
|
@@ -69,10 +69,10 @@ export declare const getConfig: (inlineConfig: Partial<Config>, root: string) =>
|
|
|
69
69
|
routeTreeFileHeader: string[];
|
|
70
70
|
routeTreeFileFooter: string[];
|
|
71
71
|
enableRouteGeneration?: boolean | undefined;
|
|
72
|
+
routeFilePrefix?: string | undefined;
|
|
73
|
+
routeFileIgnorePattern?: string | undefined;
|
|
72
74
|
experimental?: {
|
|
73
75
|
enableCodeSplitting?: boolean | undefined;
|
|
74
76
|
} | undefined;
|
|
75
|
-
|
|
76
|
-
routeFileIgnorePattern?: string | undefined;
|
|
77
|
-
}>;
|
|
77
|
+
};
|
|
78
78
|
export type Config = z.infer<typeof configSchema>;
|
package/dist/esm/config.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { configSchema as configSchema$1, getConfig as getConfig$1 } from "@tanstack/router-generator";
|
|
3
3
|
const configSchema = configSchema$1.extend({
|
|
4
|
-
enableRouteGeneration: z.boolean().optional()
|
|
5
|
-
experimental: z.object({
|
|
6
|
-
enableCodeSplitting: z.boolean().optional()
|
|
7
|
-
}).optional()
|
|
4
|
+
enableRouteGeneration: z.boolean().optional()
|
|
8
5
|
});
|
|
9
|
-
const getConfig =
|
|
10
|
-
const config =
|
|
6
|
+
const getConfig = (inlineConfig, root) => {
|
|
7
|
+
const config = getConfig$1(inlineConfig, root);
|
|
11
8
|
return configSchema.parse({ ...config, ...inlineConfig });
|
|
12
9
|
};
|
|
13
10
|
export {
|
package/dist/esm/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sources":["../../src/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
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../../src/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;"}
|
|
@@ -31,7 +31,7 @@ const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
|
31
31
|
const handleFile = async (file, event) => {
|
|
32
32
|
const filePath = normalize(file);
|
|
33
33
|
if (filePath === join(ROOT, CONFIG_FILE_NAME)) {
|
|
34
|
-
userConfig =
|
|
34
|
+
userConfig = getConfig(options, ROOT);
|
|
35
35
|
return;
|
|
36
36
|
}
|
|
37
37
|
if (event === "update" && filePath === resolve(userConfig.generatedRouteTree)) {
|
|
@@ -57,12 +57,12 @@ const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
|
57
57
|
vite: {
|
|
58
58
|
async configResolved(config) {
|
|
59
59
|
ROOT = config.root;
|
|
60
|
-
userConfig =
|
|
60
|
+
userConfig = getConfig(options, ROOT);
|
|
61
61
|
await run(generate);
|
|
62
62
|
}
|
|
63
63
|
},
|
|
64
64
|
async rspack(compiler) {
|
|
65
|
-
userConfig =
|
|
65
|
+
userConfig = getConfig(options, ROOT);
|
|
66
66
|
if (compiler.options.mode === "production") {
|
|
67
67
|
await run(generate);
|
|
68
68
|
} else {
|
|
@@ -74,7 +74,7 @@ const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
76
|
async webpack(compiler) {
|
|
77
|
-
userConfig =
|
|
77
|
+
userConfig = getConfig(options, ROOT);
|
|
78
78
|
if (compiler.options.mode === "production") {
|
|
79
79
|
await run(generate);
|
|
80
80
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-generator.js","sources":["../../src/router-generator.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 =
|
|
1
|
+
{"version":3,"file":"router-generator.js","sources":["../../src/router-generator.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/rspack.d.ts
CHANGED
|
@@ -25,11 +25,11 @@ declare const TanStackRouterGeneratorRspack: (options?: Partial<{
|
|
|
25
25
|
routeTreeFileHeader: string[];
|
|
26
26
|
routeTreeFileFooter: string[];
|
|
27
27
|
enableRouteGeneration?: boolean | undefined;
|
|
28
|
+
routeFilePrefix?: string | undefined;
|
|
29
|
+
routeFileIgnorePattern?: string | undefined;
|
|
28
30
|
experimental?: {
|
|
29
31
|
enableCodeSplitting?: boolean | undefined;
|
|
30
32
|
} | undefined;
|
|
31
|
-
routeFilePrefix?: string | undefined;
|
|
32
|
-
routeFileIgnorePattern?: string | undefined;
|
|
33
33
|
}> | undefined) => _rspack_core_dist_config_zod.RspackPluginInstance;
|
|
34
34
|
/**
|
|
35
35
|
* @example
|
|
@@ -56,11 +56,11 @@ declare const TanStackRouterCodeSplitterRspack: (options?: Partial<{
|
|
|
56
56
|
routeTreeFileHeader: string[];
|
|
57
57
|
routeTreeFileFooter: string[];
|
|
58
58
|
enableRouteGeneration?: boolean | undefined;
|
|
59
|
+
routeFilePrefix?: string | undefined;
|
|
60
|
+
routeFileIgnorePattern?: string | undefined;
|
|
59
61
|
experimental?: {
|
|
60
62
|
enableCodeSplitting?: boolean | undefined;
|
|
61
63
|
} | undefined;
|
|
62
|
-
routeFilePrefix?: string | undefined;
|
|
63
|
-
routeFileIgnorePattern?: string | undefined;
|
|
64
64
|
}> | undefined) => _rspack_core_dist_config_zod.RspackPluginInstance;
|
|
65
65
|
/**
|
|
66
66
|
* @example
|
|
@@ -87,11 +87,11 @@ declare const TanStackRouterRspack: (options?: Partial<{
|
|
|
87
87
|
routeTreeFileHeader: string[];
|
|
88
88
|
routeTreeFileFooter: string[];
|
|
89
89
|
enableRouteGeneration?: boolean | undefined;
|
|
90
|
+
routeFilePrefix?: string | undefined;
|
|
91
|
+
routeFileIgnorePattern?: string | undefined;
|
|
90
92
|
experimental?: {
|
|
91
93
|
enableCodeSplitting?: boolean | undefined;
|
|
92
94
|
} | undefined;
|
|
93
|
-
routeFilePrefix?: string | undefined;
|
|
94
|
-
routeFileIgnorePattern?: string | undefined;
|
|
95
95
|
}> | undefined) => _rspack_core_dist_config_zod.RspackPluginInstance;
|
|
96
96
|
export default TanStackRouterRspack;
|
|
97
97
|
export { configSchema, TanStackRouterRspack, TanStackRouterGeneratorRspack, TanStackRouterCodeSplitterRspack, };
|
package/dist/esm/vite.d.ts
CHANGED
|
@@ -21,11 +21,11 @@ declare const TanStackRouterGeneratorVite: (options?: Partial<{
|
|
|
21
21
|
routeTreeFileHeader: string[];
|
|
22
22
|
routeTreeFileFooter: string[];
|
|
23
23
|
enableRouteGeneration?: boolean | undefined;
|
|
24
|
+
routeFilePrefix?: string | undefined;
|
|
25
|
+
routeFileIgnorePattern?: string | undefined;
|
|
24
26
|
experimental?: {
|
|
25
27
|
enableCodeSplitting?: boolean | undefined;
|
|
26
28
|
} | undefined;
|
|
27
|
-
routeFilePrefix?: string | undefined;
|
|
28
|
-
routeFileIgnorePattern?: string | undefined;
|
|
29
29
|
}> | undefined) => import('vite').Plugin<any> | import('vite').Plugin<any>[];
|
|
30
30
|
/**
|
|
31
31
|
* @example
|
|
@@ -48,11 +48,11 @@ declare const TanStackRouterCodeSplitterVite: (options?: Partial<{
|
|
|
48
48
|
routeTreeFileHeader: string[];
|
|
49
49
|
routeTreeFileFooter: string[];
|
|
50
50
|
enableRouteGeneration?: boolean | undefined;
|
|
51
|
+
routeFilePrefix?: string | undefined;
|
|
52
|
+
routeFileIgnorePattern?: string | undefined;
|
|
51
53
|
experimental?: {
|
|
52
54
|
enableCodeSplitting?: boolean | undefined;
|
|
53
55
|
} | undefined;
|
|
54
|
-
routeFilePrefix?: string | undefined;
|
|
55
|
-
routeFileIgnorePattern?: string | undefined;
|
|
56
56
|
}> | undefined) => import('vite').Plugin<any> | import('vite').Plugin<any>[];
|
|
57
57
|
/**
|
|
58
58
|
* @example
|
|
@@ -75,11 +75,11 @@ declare const TanStackRouterVite: (options?: Partial<{
|
|
|
75
75
|
routeTreeFileHeader: string[];
|
|
76
76
|
routeTreeFileFooter: string[];
|
|
77
77
|
enableRouteGeneration?: boolean | undefined;
|
|
78
|
+
routeFilePrefix?: string | undefined;
|
|
79
|
+
routeFileIgnorePattern?: string | undefined;
|
|
78
80
|
experimental?: {
|
|
79
81
|
enableCodeSplitting?: boolean | undefined;
|
|
80
82
|
} | undefined;
|
|
81
|
-
routeFilePrefix?: string | undefined;
|
|
82
|
-
routeFileIgnorePattern?: string | undefined;
|
|
83
83
|
}> | undefined) => import('vite').Plugin<any> | import('vite').Plugin<any>[];
|
|
84
84
|
export default TanStackRouterVite;
|
|
85
85
|
export { configSchema, TanStackRouterGeneratorVite, TanStackRouterCodeSplitterVite, TanStackRouterVite, };
|
package/dist/esm/webpack.d.ts
CHANGED
|
@@ -21,11 +21,11 @@ declare const TanStackRouterGeneratorWebpack: (options?: Partial<{
|
|
|
21
21
|
routeTreeFileHeader: string[];
|
|
22
22
|
routeTreeFileFooter: string[];
|
|
23
23
|
enableRouteGeneration?: boolean | undefined;
|
|
24
|
+
routeFilePrefix?: string | undefined;
|
|
25
|
+
routeFileIgnorePattern?: string | undefined;
|
|
24
26
|
experimental?: {
|
|
25
27
|
enableCodeSplitting?: boolean | undefined;
|
|
26
28
|
} | undefined;
|
|
27
|
-
routeFilePrefix?: string | undefined;
|
|
28
|
-
routeFileIgnorePattern?: string | undefined;
|
|
29
29
|
}> | undefined) => import('unplugin').WebpackPluginInstance;
|
|
30
30
|
/**
|
|
31
31
|
* @example
|
|
@@ -48,11 +48,11 @@ declare const TanStackRouterCodeSplitterWebpack: (options?: Partial<{
|
|
|
48
48
|
routeTreeFileHeader: string[];
|
|
49
49
|
routeTreeFileFooter: string[];
|
|
50
50
|
enableRouteGeneration?: boolean | undefined;
|
|
51
|
+
routeFilePrefix?: string | undefined;
|
|
52
|
+
routeFileIgnorePattern?: string | undefined;
|
|
51
53
|
experimental?: {
|
|
52
54
|
enableCodeSplitting?: boolean | undefined;
|
|
53
55
|
} | undefined;
|
|
54
|
-
routeFilePrefix?: string | undefined;
|
|
55
|
-
routeFileIgnorePattern?: string | undefined;
|
|
56
56
|
}> | undefined) => import('unplugin').WebpackPluginInstance;
|
|
57
57
|
/**
|
|
58
58
|
* @example
|
|
@@ -75,11 +75,11 @@ declare const TanStackRouterWebpack: (options?: Partial<{
|
|
|
75
75
|
routeTreeFileHeader: string[];
|
|
76
76
|
routeTreeFileFooter: string[];
|
|
77
77
|
enableRouteGeneration?: boolean | undefined;
|
|
78
|
+
routeFilePrefix?: string | undefined;
|
|
79
|
+
routeFileIgnorePattern?: string | undefined;
|
|
78
80
|
experimental?: {
|
|
79
81
|
enableCodeSplitting?: boolean | undefined;
|
|
80
82
|
} | undefined;
|
|
81
|
-
routeFilePrefix?: string | undefined;
|
|
82
|
-
routeFileIgnorePattern?: string | undefined;
|
|
83
83
|
}> | undefined) => import('unplugin').WebpackPluginInstance;
|
|
84
84
|
export default TanStackRouterWebpack;
|
|
85
85
|
export { configSchema, TanStackRouterWebpack, TanStackRouterGeneratorWebpack, TanStackRouterCodeSplitterWebpack, };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/router-plugin",
|
|
3
|
-
"version": "1.45.
|
|
3
|
+
"version": "1.45.8",
|
|
4
4
|
"description": "Modern and scalable routing for React applications",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -76,14 +76,14 @@
|
|
|
76
76
|
"node": ">=12"
|
|
77
77
|
},
|
|
78
78
|
"dependencies": {
|
|
79
|
-
"@babel/core": "^7.24.
|
|
80
|
-
"@babel/generator": "^7.24.
|
|
79
|
+
"@babel/core": "^7.24.9",
|
|
80
|
+
"@babel/generator": "^7.24.10",
|
|
81
81
|
"@babel/parser": "^7.24.8",
|
|
82
82
|
"@babel/plugin-syntax-jsx": "^7.24.7",
|
|
83
83
|
"@babel/plugin-syntax-typescript": "^7.24.7",
|
|
84
84
|
"@babel/template": "^7.24.7",
|
|
85
85
|
"@babel/traverse": "^7.24.8",
|
|
86
|
-
"@babel/types": "^7.24.
|
|
86
|
+
"@babel/types": "^7.24.9",
|
|
87
87
|
"@types/babel__core": "^7.20.5",
|
|
88
88
|
"@types/babel__generator": "^7.6.8",
|
|
89
89
|
"@types/babel__template": "^7.4.4",
|
|
@@ -92,10 +92,10 @@
|
|
|
92
92
|
"chokidar": "^3.6.0",
|
|
93
93
|
"unplugin": "^1.11.0",
|
|
94
94
|
"zod": "^3.23.8",
|
|
95
|
-
"@tanstack/router-generator": "^1.45.
|
|
95
|
+
"@tanstack/router-generator": "^1.45.7"
|
|
96
96
|
},
|
|
97
97
|
"devDependencies": {
|
|
98
|
-
"vite": "^5.3.
|
|
98
|
+
"vite": "^5.3.4"
|
|
99
99
|
},
|
|
100
100
|
"peerDependencies": {
|
|
101
101
|
"@rsbuild/core": ">=0.7.9",
|
package/src/code-splitter.ts
CHANGED
|
@@ -62,7 +62,7 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
|
|
|
62
62
|
let ROOT: string = process.cwd()
|
|
63
63
|
let userConfig = options as Config
|
|
64
64
|
|
|
65
|
-
const handleSplittingFile =
|
|
65
|
+
const handleSplittingFile = (code: string, id: string) => {
|
|
66
66
|
if (debug) console.info('Splitting route: ', id)
|
|
67
67
|
|
|
68
68
|
const compiledVirtualRoute = compileCodeSplitVirtualRoute({
|
|
@@ -82,7 +82,7 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
|
|
|
82
82
|
return compiledVirtualRoute
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
const handleCompilingFile =
|
|
85
|
+
const handleCompilingFile = (code: string, id: string) => {
|
|
86
86
|
if (debug) console.info('Handling createRoute: ', id)
|
|
87
87
|
|
|
88
88
|
const compiledReferenceRoute = compileCodeSplitReferenceRoute({
|
|
@@ -169,13 +169,13 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
|
|
|
169
169
|
},
|
|
170
170
|
|
|
171
171
|
vite: {
|
|
172
|
-
|
|
172
|
+
configResolved(config) {
|
|
173
173
|
ROOT = config.root
|
|
174
|
-
userConfig =
|
|
174
|
+
userConfig = getConfig(options, ROOT)
|
|
175
175
|
},
|
|
176
176
|
},
|
|
177
177
|
|
|
178
|
-
|
|
178
|
+
rspack(compiler) {
|
|
179
179
|
ROOT = process.cwd()
|
|
180
180
|
|
|
181
181
|
compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {
|
|
@@ -192,10 +192,10 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
|
|
|
192
192
|
)
|
|
193
193
|
})
|
|
194
194
|
|
|
195
|
-
userConfig =
|
|
195
|
+
userConfig = getConfig(options, ROOT)
|
|
196
196
|
},
|
|
197
197
|
|
|
198
|
-
|
|
198
|
+
webpack(compiler) {
|
|
199
199
|
ROOT = process.cwd()
|
|
200
200
|
|
|
201
201
|
compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {
|
|
@@ -212,7 +212,7 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
|
|
|
212
212
|
)
|
|
213
213
|
})
|
|
214
214
|
|
|
215
|
-
userConfig =
|
|
215
|
+
userConfig = getConfig(options, ROOT)
|
|
216
216
|
|
|
217
217
|
if (
|
|
218
218
|
userConfig.experimental?.enableCodeSplitting &&
|
package/src/config.ts
CHANGED
|
@@ -6,18 +6,10 @@ import {
|
|
|
6
6
|
|
|
7
7
|
export const configSchema = generatorConfigSchema.extend({
|
|
8
8
|
enableRouteGeneration: z.boolean().optional(),
|
|
9
|
-
experimental: z
|
|
10
|
-
.object({
|
|
11
|
-
enableCodeSplitting: z.boolean().optional(),
|
|
12
|
-
})
|
|
13
|
-
.optional(),
|
|
14
9
|
})
|
|
15
10
|
|
|
16
|
-
export const getConfig =
|
|
17
|
-
inlineConfig
|
|
18
|
-
root: string,
|
|
19
|
-
) => {
|
|
20
|
-
const config = await getGeneratorConfig(inlineConfig, root)
|
|
11
|
+
export const getConfig = (inlineConfig: Partial<Config>, root: string) => {
|
|
12
|
+
const config = getGeneratorConfig(inlineConfig, root)
|
|
21
13
|
|
|
22
14
|
return configSchema.parse({ ...config, ...inlineConfig })
|
|
23
15
|
}
|
package/src/router-generator.ts
CHANGED
|
@@ -50,7 +50,7 @@ export const unpluginRouterGeneratorFactory: UnpluginFactory<
|
|
|
50
50
|
const filePath = normalize(file)
|
|
51
51
|
|
|
52
52
|
if (filePath === join(ROOT, CONFIG_FILE_NAME)) {
|
|
53
|
-
userConfig =
|
|
53
|
+
userConfig = getConfig(options, ROOT)
|
|
54
54
|
return
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -84,13 +84,13 @@ export const unpluginRouterGeneratorFactory: UnpluginFactory<
|
|
|
84
84
|
vite: {
|
|
85
85
|
async configResolved(config) {
|
|
86
86
|
ROOT = config.root
|
|
87
|
-
userConfig =
|
|
87
|
+
userConfig = getConfig(options, ROOT)
|
|
88
88
|
|
|
89
89
|
await run(generate)
|
|
90
90
|
},
|
|
91
91
|
},
|
|
92
92
|
async rspack(compiler) {
|
|
93
|
-
userConfig =
|
|
93
|
+
userConfig = getConfig(options, ROOT)
|
|
94
94
|
|
|
95
95
|
// rspack watcher doesn't register newly created files
|
|
96
96
|
if (compiler.options.mode === 'production') {
|
|
@@ -104,7 +104,7 @@ export const unpluginRouterGeneratorFactory: UnpluginFactory<
|
|
|
104
104
|
}
|
|
105
105
|
},
|
|
106
106
|
async webpack(compiler) {
|
|
107
|
-
userConfig =
|
|
107
|
+
userConfig = getConfig(options, ROOT)
|
|
108
108
|
|
|
109
109
|
// webpack watcher doesn't register newly created files
|
|
110
110
|
if (compiler.options.mode === 'production') {
|