@tanstack/router-plugin 1.121.6 → 1.121.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/core/code-splitter/compilers.cjs +17 -18
- package/dist/cjs/core/code-splitter/compilers.cjs.map +1 -1
- package/dist/cjs/core/code-splitter/compilers.d.cts +0 -1
- package/dist/cjs/core/config.d.cts +4 -4
- package/dist/cjs/core/route-autoimport-plugin.cjs +51 -45
- package/dist/cjs/core/route-autoimport-plugin.cjs.map +1 -1
- package/dist/cjs/core/router-code-splitter-plugin.cjs +65 -58
- package/dist/cjs/core/router-code-splitter-plugin.cjs.map +1 -1
- package/dist/cjs/core/router-composed-plugin.cjs +7 -1
- package/dist/cjs/core/router-composed-plugin.cjs.map +1 -1
- package/dist/cjs/core/router-generator-plugin.cjs +18 -19
- package/dist/cjs/core/router-generator-plugin.cjs.map +1 -1
- package/dist/cjs/core/router-hmr-plugin.cjs +26 -24
- package/dist/cjs/core/router-hmr-plugin.cjs.map +1 -1
- package/dist/cjs/core/utils.cjs +0 -7
- package/dist/cjs/core/utils.cjs.map +1 -1
- package/dist/cjs/core/utils.d.cts +0 -1
- package/dist/esm/core/code-splitter/compilers.d.ts +0 -1
- package/dist/esm/core/code-splitter/compilers.js +17 -18
- package/dist/esm/core/code-splitter/compilers.js.map +1 -1
- package/dist/esm/core/config.d.ts +4 -4
- package/dist/esm/core/route-autoimport-plugin.js +52 -46
- package/dist/esm/core/route-autoimport-plugin.js.map +1 -1
- package/dist/esm/core/router-code-splitter-plugin.js +67 -60
- package/dist/esm/core/router-code-splitter-plugin.js.map +1 -1
- package/dist/esm/core/router-composed-plugin.js +7 -1
- package/dist/esm/core/router-composed-plugin.js.map +1 -1
- package/dist/esm/core/router-generator-plugin.js +19 -20
- package/dist/esm/core/router-generator-plugin.js.map +1 -1
- package/dist/esm/core/router-hmr-plugin.js +27 -25
- package/dist/esm/core/router-hmr-plugin.js.map +1 -1
- package/dist/esm/core/utils.d.ts +0 -1
- package/dist/esm/core/utils.js +1 -8
- package/dist/esm/core/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/core/code-splitter/compilers.ts +25 -24
- package/src/core/route-autoimport-plugin.ts +57 -53
- package/src/core/router-code-splitter-plugin.ts +75 -79
- package/src/core/router-composed-plugin.ts +7 -1
- package/src/core/router-generator-plugin.ts +23 -24
- package/src/core/router-hmr-plugin.ts +24 -23
- package/src/core/utils.ts +0 -15
- package/src/global.d.ts +7 -0
|
@@ -7,9 +7,6 @@ const compilers = require("./code-splitter/compilers.cjs");
|
|
|
7
7
|
const constants = require("./constants.cjs");
|
|
8
8
|
const pathIds = require("./code-splitter/path-ids.cjs");
|
|
9
9
|
const utils = require("./utils.cjs");
|
|
10
|
-
function capitalizeFirst(str) {
|
|
11
|
-
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
12
|
-
}
|
|
13
10
|
const bannedBeforeExternalPlugins = [
|
|
14
11
|
{
|
|
15
12
|
identifier: "@react-refresh",
|
|
@@ -19,11 +16,11 @@ const bannedBeforeExternalPlugins = [
|
|
|
19
16
|
}
|
|
20
17
|
];
|
|
21
18
|
class FoundPluginInBeforeCode extends Error {
|
|
22
|
-
constructor(externalPlugin,
|
|
23
|
-
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:
|
|
19
|
+
constructor(externalPlugin, pluginFramework) {
|
|
20
|
+
super(`We detected that the '${externalPlugin.pkg}' was passed before '@tanstack/router-plugin/${pluginFramework}'. Please make sure that '@tanstack/router-plugin' is passed before '${externalPlugin.pkg}' and try again:
|
|
24
21
|
e.g.
|
|
25
22
|
plugins: [
|
|
26
|
-
|
|
23
|
+
tanstackRouter(), // Place this before ${externalPlugin.usage}
|
|
27
24
|
${externalPlugin.usage},
|
|
28
25
|
]
|
|
29
26
|
`);
|
|
@@ -42,7 +39,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
42
39
|
var _a;
|
|
43
40
|
return (_a = userConfig.codeSplittingOptions) == null ? void 0 : _a.splitBehavior;
|
|
44
41
|
};
|
|
45
|
-
const handleCompilingReferenceFile = (code, id) => {
|
|
42
|
+
const handleCompilingReferenceFile = (code, id, generatorNodeInfo) => {
|
|
46
43
|
if (utils.debug) console.info("Compiling Route: ", id);
|
|
47
44
|
const fromCode = compilers.detectCodeSplitGroupingsFromRoute({
|
|
48
45
|
code
|
|
@@ -59,7 +56,7 @@ ${message}`
|
|
|
59
56
|
}
|
|
60
57
|
const userShouldSplitFn = getShouldSplitFn();
|
|
61
58
|
const pluginSplitBehavior = userShouldSplitFn == null ? void 0 : userShouldSplitFn({
|
|
62
|
-
routeId:
|
|
59
|
+
routeId: generatorNodeInfo.routePath
|
|
63
60
|
});
|
|
64
61
|
if (pluginSplitBehavior) {
|
|
65
62
|
const res = config.splitGroupingsSchema.safeParse(pluginSplitBehavior);
|
|
@@ -111,63 +108,73 @@ ${message}`
|
|
|
111
108
|
}
|
|
112
109
|
return result;
|
|
113
110
|
};
|
|
114
|
-
return
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
if (
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
111
|
+
return [
|
|
112
|
+
{
|
|
113
|
+
name: "tanstack-router:code-splitter:compile-reference-file",
|
|
114
|
+
enforce: "pre",
|
|
115
|
+
transform: {
|
|
116
|
+
filter: {
|
|
117
|
+
id: {
|
|
118
|
+
exclude: constants.tsrSplit
|
|
119
|
+
},
|
|
120
|
+
code: "createFileRoute("
|
|
121
|
+
},
|
|
122
|
+
handler(code, id) {
|
|
123
|
+
var _a;
|
|
124
|
+
const generatorFileInfo = (_a = globalThis.TSR_ROUTES_BY_ID_MAP) == null ? void 0 : _a.get(id);
|
|
125
|
+
if (generatorFileInfo && code.includes("createFileRoute(")) {
|
|
126
|
+
for (const externalPlugin of bannedBeforeExternalPlugins) {
|
|
127
|
+
if (!externalPlugin.frameworks.includes(framework)) {
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (code.includes(externalPlugin.identifier)) {
|
|
131
|
+
throw new FoundPluginInBeforeCode(externalPlugin, framework);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return handleCompilingReferenceFile(code, id, generatorFileInfo);
|
|
133
135
|
}
|
|
136
|
+
return null;
|
|
134
137
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
vite: {
|
|
149
|
-
configResolved(config$1) {
|
|
150
|
-
ROOT = config$1.root;
|
|
138
|
+
},
|
|
139
|
+
vite: {
|
|
140
|
+
configResolved(config$1) {
|
|
141
|
+
ROOT = config$1.root;
|
|
142
|
+
userConfig = config.getConfig(options, ROOT);
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
rspack() {
|
|
146
|
+
ROOT = process.cwd();
|
|
147
|
+
userConfig = config.getConfig(options, ROOT);
|
|
148
|
+
},
|
|
149
|
+
webpack(compiler) {
|
|
150
|
+
ROOT = process.cwd();
|
|
151
151
|
userConfig = config.getConfig(options, ROOT);
|
|
152
|
+
if (compiler.options.mode === "production") {
|
|
153
|
+
compiler.hooks.done.tap(PLUGIN_NAME, () => {
|
|
154
|
+
console.info("✅ " + PLUGIN_NAME + ": code-splitting done!");
|
|
155
|
+
setTimeout(() => {
|
|
156
|
+
process.exit(0);
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
}
|
|
152
160
|
}
|
|
153
161
|
},
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
});
|
|
162
|
+
{
|
|
163
|
+
name: "tanstack-router:code-splitter:compile-virtual-file",
|
|
164
|
+
enforce: "pre",
|
|
165
|
+
transform: {
|
|
166
|
+
filter: {
|
|
167
|
+
id: /tsr-split/
|
|
168
|
+
},
|
|
169
|
+
handler(code, id) {
|
|
170
|
+
const url = node_url.pathToFileURL(id);
|
|
171
|
+
url.searchParams.delete("v");
|
|
172
|
+
id = node_url.fileURLToPath(url).replace(/\\/g, "/");
|
|
173
|
+
return handleCompilingVirtualFile(code, id);
|
|
174
|
+
}
|
|
168
175
|
}
|
|
169
176
|
}
|
|
170
|
-
|
|
177
|
+
];
|
|
171
178
|
};
|
|
172
179
|
exports.unpluginRouterCodeSplitterFactory = unpluginRouterCodeSplitterFactory;
|
|
173
180
|
//# sourceMappingURL=router-code-splitter-plugin.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-code-splitter-plugin.cjs","sources":["../../../src/core/router-code-splitter-plugin.ts"],"sourcesContent":["/**\n * It is important to familiarize yourself with how the code-splitting works in this plugin.\n * https://github.com/TanStack/router/pull/3355\n */\n\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { logDiff } from '@tanstack/router-utils'\nimport { getConfig, splitGroupingsSchema } from './config'\nimport {\n compileCodeSplitReferenceRoute,\n compileCodeSplitVirtualRoute,\n detectCodeSplitGroupingsFromRoute,\n} from './code-splitter/compilers'\nimport {\n defaultCodeSplitGroupings,\n splitRouteIdentNodes,\n tsrSplit,\n} from './constants'\nimport { decodeIdentifier } from './code-splitter/path-ids'\nimport { debug, fileIsInRoutesDirectory } from './utils'\nimport type { CodeSplitGroupings, SplitRouteIdentNodes } from './constants'\n\nimport type { Config } from './config'\nimport type {\n UnpluginContextMeta,\n UnpluginFactory,\n TransformResult as UnpluginTransformResult,\n} from 'unplugin'\n\nfunction capitalizeFirst(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\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'\n\nexport const unpluginRouterCodeSplitterFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, { framework }) => {\n let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n const isProduction = process.env.NODE_ENV === 'production'\n\n const getGlobalCodeSplitGroupings = () => {\n return (\n userConfig.codeSplittingOptions?.defaultBehavior ||\n defaultCodeSplitGroupings\n )\n }\n const getShouldSplitFn = () => {\n return userConfig.codeSplittingOptions?.splitBehavior\n }\n\n const handleCompilingReferenceFile = (\n code: string,\n id: string,\n ): UnpluginTransformResult => {\n if (debug) console.info('Compiling Route: ', id)\n\n const fromCode = detectCodeSplitGroupingsFromRoute({\n code,\n })\n\n if (fromCode.groupings) {\n const res = splitGroupingsSchema.safeParse(fromCode.groupings)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const userShouldSplitFn = getShouldSplitFn()\n\n const pluginSplitBehavior = userShouldSplitFn?.({\n routeId: fromCode.routeId,\n }) as CodeSplitGroupings | undefined\n\n if (pluginSplitBehavior) {\n const res = splitGroupingsSchema.safeParse(pluginSplitBehavior)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings returned when using \\`splitBehavior\\` for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const splitGroupings: CodeSplitGroupings =\n fromCode.groupings || pluginSplitBehavior || getGlobalCodeSplitGroupings()\n\n const compiledReferenceRoute = compileCodeSplitReferenceRoute({\n code,\n runtimeEnv: isProduction ? 'prod' : 'dev',\n codeSplitGroupings: splitGroupings,\n targetFramework: userConfig.target,\n filename: id,\n id,\n })\n\n if (debug) {\n logDiff(code, compiledReferenceRoute.code)\n console.log('Output:\\n', compiledReferenceRoute.code + '\\n\\n')\n }\n\n return compiledReferenceRoute\n }\n\n const handleCompilingVirtualFile = (\n code: string,\n id: string,\n ): UnpluginTransformResult => {\n if (debug) console.info('Splitting Route: ', id)\n\n const [_, ...pathnameParts] = id.split('?')\n\n const searchParams = new URLSearchParams(pathnameParts.join('?'))\n const splitValue = searchParams.get(tsrSplit)\n\n if (!splitValue) {\n throw new Error(\n `The split value for the virtual route \"${id}\" was not found.`,\n )\n }\n\n const rawGrouping = decodeIdentifier(splitValue)\n const grouping = [...new Set(rawGrouping)].filter((p) =>\n splitRouteIdentNodes.includes(p as any),\n ) as Array<SplitRouteIdentNodes>\n\n const result = compileCodeSplitVirtualRoute({\n code,\n filename: id,\n splitTargets: grouping,\n })\n\n if (debug) {\n logDiff(code, result.code)\n console.log('Output:\\n', result.code + '\\n\\n')\n }\n\n return result\n }\n\n return {\n name: 'router-code-splitter-plugin',\n enforce: 'pre',\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(tsrSplit)) {\n return handleCompilingVirtualFile(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 handleCompilingReferenceFile(code, id)\n }\n\n return null\n },\n\n transformInclude(id) {\n if (!userConfig.autoCodeSplitting) {\n return undefined\n }\n\n if (\n fileIsInRoutesDirectory(id, userConfig.routesDirectory) ||\n id.includes(tsrSplit)\n ) {\n return true\n }\n return false\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n\n userConfig = getConfig(options, ROOT)\n },\n },\n\n rspack(_compiler) {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n },\n\n webpack(compiler) {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n\n if (\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"],"names":["defaultCodeSplitGroupings","debug","detectCodeSplitGroupingsFromRoute","splitGroupingsSchema","compileCodeSplitReferenceRoute","logDiff","tsrSplit","decodeIdentifier","splitRouteIdentNodes","compileCodeSplitVirtualRoute","pathToFileURL","fileURLToPath","fileIsInRoutesDirectory","config","getConfig"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router-code-splitter-plugin.cjs","sources":["../../../src/core/router-code-splitter-plugin.ts"],"sourcesContent":["/**\n * It is important to familiarize yourself with how the code-splitting works in this plugin.\n * https://github.com/TanStack/router/pull/3355\n */\n\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { logDiff } from '@tanstack/router-utils'\nimport { getConfig, splitGroupingsSchema } from './config'\nimport {\n compileCodeSplitReferenceRoute,\n compileCodeSplitVirtualRoute,\n detectCodeSplitGroupingsFromRoute,\n} from './code-splitter/compilers'\nimport {\n defaultCodeSplitGroupings,\n splitRouteIdentNodes,\n tsrSplit,\n} from './constants'\nimport { decodeIdentifier } from './code-splitter/path-ids'\nimport { debug } from './utils'\nimport type { CodeSplitGroupings, SplitRouteIdentNodes } from './constants'\nimport type { GetRoutesByFileMapResultValue } from '@tanstack/router-generator'\nimport type { Config } from './config'\nimport type {\n UnpluginContextMeta,\n UnpluginFactory,\n TransformResult as UnpluginTransformResult,\n} from 'unplugin'\n\ntype BannedBeforeExternalPlugin = {\n identifier: string\n pkg: string\n usage: string\n frameworks: Array<UnpluginContextMeta['framework']>\n}\n\nconst bannedBeforeExternalPlugins: Array<BannedBeforeExternalPlugin> = [\n {\n identifier: '@react-refresh',\n pkg: '@vitejs/plugin-react',\n usage: 'viteReact()',\n frameworks: ['vite'],\n },\n]\n\nclass FoundPluginInBeforeCode extends Error {\n constructor(\n externalPlugin: BannedBeforeExternalPlugin,\n pluginFramework: string,\n ) {\n super(`We detected that the '${externalPlugin.pkg}' was passed before '@tanstack/router-plugin/${pluginFramework}'. Please make sure that '@tanstack/router-plugin' is passed before '${externalPlugin.pkg}' and try again: \ne.g.\nplugins: [\n tanstackRouter(), // Place this before ${externalPlugin.usage}\n ${externalPlugin.usage},\n]\n`)\n }\n}\n\nconst PLUGIN_NAME = 'unplugin:router-code-splitter'\n\nexport const unpluginRouterCodeSplitterFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, { framework }) => {\n let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n const isProduction = process.env.NODE_ENV === 'production'\n\n const getGlobalCodeSplitGroupings = () => {\n return (\n userConfig.codeSplittingOptions?.defaultBehavior ||\n defaultCodeSplitGroupings\n )\n }\n const getShouldSplitFn = () => {\n return userConfig.codeSplittingOptions?.splitBehavior\n }\n\n const handleCompilingReferenceFile = (\n code: string,\n id: string,\n generatorNodeInfo: GetRoutesByFileMapResultValue,\n ): UnpluginTransformResult => {\n if (debug) console.info('Compiling Route: ', id)\n\n const fromCode = detectCodeSplitGroupingsFromRoute({\n code,\n })\n\n if (fromCode.groupings) {\n const res = splitGroupingsSchema.safeParse(fromCode.groupings)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const userShouldSplitFn = getShouldSplitFn()\n\n const pluginSplitBehavior = userShouldSplitFn?.({\n routeId: generatorNodeInfo.routePath,\n }) as CodeSplitGroupings | undefined\n\n if (pluginSplitBehavior) {\n const res = splitGroupingsSchema.safeParse(pluginSplitBehavior)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings returned when using \\`splitBehavior\\` for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const splitGroupings: CodeSplitGroupings =\n fromCode.groupings || pluginSplitBehavior || getGlobalCodeSplitGroupings()\n\n const compiledReferenceRoute = compileCodeSplitReferenceRoute({\n code,\n runtimeEnv: isProduction ? 'prod' : 'dev',\n codeSplitGroupings: splitGroupings,\n targetFramework: userConfig.target,\n filename: id,\n id,\n })\n\n if (debug) {\n logDiff(code, compiledReferenceRoute.code)\n console.log('Output:\\n', compiledReferenceRoute.code + '\\n\\n')\n }\n\n return compiledReferenceRoute\n }\n\n const handleCompilingVirtualFile = (\n code: string,\n id: string,\n ): UnpluginTransformResult => {\n if (debug) console.info('Splitting Route: ', id)\n\n const [_, ...pathnameParts] = id.split('?')\n\n const searchParams = new URLSearchParams(pathnameParts.join('?'))\n const splitValue = searchParams.get(tsrSplit)\n\n if (!splitValue) {\n throw new Error(\n `The split value for the virtual route \"${id}\" was not found.`,\n )\n }\n\n const rawGrouping = decodeIdentifier(splitValue)\n const grouping = [...new Set(rawGrouping)].filter((p) =>\n splitRouteIdentNodes.includes(p as any),\n ) as Array<SplitRouteIdentNodes>\n\n const result = compileCodeSplitVirtualRoute({\n code,\n filename: id,\n splitTargets: grouping,\n })\n\n if (debug) {\n logDiff(code, result.code)\n console.log('Output:\\n', result.code + '\\n\\n')\n }\n\n return result\n }\n\n return [\n {\n name: 'tanstack-router:code-splitter:compile-reference-file',\n enforce: 'pre',\n\n transform: {\n filter: {\n id: {\n exclude: tsrSplit,\n },\n code: 'createFileRoute(',\n },\n handler(code, id) {\n const generatorFileInfo = globalThis.TSR_ROUTES_BY_ID_MAP?.get(id)\n if (generatorFileInfo && code.includes('createFileRoute(')) {\n for (const externalPlugin of bannedBeforeExternalPlugins) {\n if (!externalPlugin.frameworks.includes(framework)) {\n continue\n }\n\n if (code.includes(externalPlugin.identifier)) {\n throw new FoundPluginInBeforeCode(externalPlugin, framework)\n }\n }\n\n return handleCompilingReferenceFile(code, id, generatorFileInfo)\n }\n\n return null\n },\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n userConfig = getConfig(options, ROOT)\n },\n },\n\n rspack() {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n },\n\n webpack(compiler) {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n\n if (compiler.options.mode === 'production') {\n compiler.hooks.done.tap(PLUGIN_NAME, () => {\n console.info('✅ ' + PLUGIN_NAME + ': code-splitting done!')\n setTimeout(() => {\n process.exit(0)\n })\n })\n }\n },\n },\n {\n name: 'tanstack-router:code-splitter:compile-virtual-file',\n enforce: 'pre',\n\n transform: {\n filter: {\n id: /tsr-split/,\n },\n handler(code, id) {\n const url = pathToFileURL(id)\n url.searchParams.delete('v')\n id = fileURLToPath(url).replace(/\\\\/g, '/')\n return handleCompilingVirtualFile(code, id)\n },\n },\n },\n ]\n}\n"],"names":["defaultCodeSplitGroupings","debug","detectCodeSplitGroupingsFromRoute","splitGroupingsSchema","compileCodeSplitReferenceRoute","logDiff","tsrSplit","decodeIdentifier","splitRouteIdentNodes","compileCodeSplitVirtualRoute","config","getConfig","pathToFileURL","fileURLToPath"],"mappings":"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"}
|
|
@@ -15,7 +15,13 @@ const unpluginRouterComposedFactory = (options = {}, meta) => {
|
|
|
15
15
|
const routerGenerator = getPlugin(routerGeneratorPlugin.unpluginRouterGeneratorFactory);
|
|
16
16
|
const routerCodeSplitter = getPlugin(routerCodeSplitterPlugin.unpluginRouterCodeSplitterFactory);
|
|
17
17
|
const routeAutoImport = getPlugin(routeAutoimportPlugin.unpluginRouteAutoImportFactory);
|
|
18
|
-
const result = [...routerGenerator
|
|
18
|
+
const result = [...routerGenerator];
|
|
19
|
+
if (options.autoCodeSplitting) {
|
|
20
|
+
result.push(...routerCodeSplitter);
|
|
21
|
+
}
|
|
22
|
+
if (options.verboseFileRoutes === false) {
|
|
23
|
+
result.push(...routeAutoImport);
|
|
24
|
+
}
|
|
19
25
|
const isProduction = process.env.NODE_ENV === "production";
|
|
20
26
|
if (!isProduction && !options.autoCodeSplitting) {
|
|
21
27
|
const routerHmr = getPlugin(routerHmrPlugin.unpluginRouterHmrFactory);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-composed-plugin.cjs","sources":["../../../src/core/router-composed-plugin.ts"],"sourcesContent":["import { unpluginRouterGeneratorFactory } from './router-generator-plugin'\nimport { unpluginRouterCodeSplitterFactory } from './router-code-splitter-plugin'\nimport { unpluginRouterHmrFactory } from './router-hmr-plugin'\nimport { unpluginRouteAutoImportFactory } from './route-autoimport-plugin'\nimport type { Config } from './config'\nimport type { UnpluginFactory } from 'unplugin'\n\nexport const unpluginRouterComposedFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, meta) => {\n const getPlugin = (pluginFactory: UnpluginFactory<Partial<Config>>) => {\n const plugin = pluginFactory(options, meta)\n if (!Array.isArray(plugin)) {\n return [plugin]\n }\n return plugin\n }\n\n const routerGenerator = getPlugin(unpluginRouterGeneratorFactory)\n const routerCodeSplitter = getPlugin(unpluginRouterCodeSplitterFactory)\n const routeAutoImport = getPlugin(unpluginRouteAutoImportFactory)\n\n const result = [...routerGenerator
|
|
1
|
+
{"version":3,"file":"router-composed-plugin.cjs","sources":["../../../src/core/router-composed-plugin.ts"],"sourcesContent":["import { unpluginRouterGeneratorFactory } from './router-generator-plugin'\nimport { unpluginRouterCodeSplitterFactory } from './router-code-splitter-plugin'\nimport { unpluginRouterHmrFactory } from './router-hmr-plugin'\nimport { unpluginRouteAutoImportFactory } from './route-autoimport-plugin'\nimport type { Config } from './config'\nimport type { UnpluginFactory } from 'unplugin'\n\nexport const unpluginRouterComposedFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, meta) => {\n const getPlugin = (pluginFactory: UnpluginFactory<Partial<Config>>) => {\n const plugin = pluginFactory(options, meta)\n if (!Array.isArray(plugin)) {\n return [plugin]\n }\n return plugin\n }\n\n const routerGenerator = getPlugin(unpluginRouterGeneratorFactory)\n const routerCodeSplitter = getPlugin(unpluginRouterCodeSplitterFactory)\n const routeAutoImport = getPlugin(unpluginRouteAutoImportFactory)\n\n const result = [...routerGenerator]\n if (options.autoCodeSplitting) {\n result.push(...routerCodeSplitter)\n }\n if (options.verboseFileRoutes === false) {\n result.push(...routeAutoImport)\n }\n\n const isProduction = process.env.NODE_ENV === 'production'\n\n if (!isProduction && !options.autoCodeSplitting) {\n const routerHmr = getPlugin(unpluginRouterHmrFactory)\n result.push(...routerHmr)\n }\n return result\n}\n"],"names":["unpluginRouterGeneratorFactory","unpluginRouterCodeSplitterFactory","unpluginRouteAutoImportFactory","unpluginRouterHmrFactory"],"mappings":";;;;;;AAOO,MAAM,gCAET,CAAC,UAAU,IAAI,SAAS;AACpB,QAAA,YAAY,CAAC,kBAAoD;AAC/D,UAAA,SAAS,cAAc,SAAS,IAAI;AAC1C,QAAI,CAAC,MAAM,QAAQ,MAAM,GAAG;AAC1B,aAAO,CAAC,MAAM;AAAA,IAAA;AAET,WAAA;AAAA,EACT;AAEM,QAAA,kBAAkB,UAAUA,oDAA8B;AAC1D,QAAA,qBAAqB,UAAUC,0DAAiC;AAChE,QAAA,kBAAkB,UAAUC,oDAA8B;AAE1D,QAAA,SAAS,CAAC,GAAG,eAAe;AAClC,MAAI,QAAQ,mBAAmB;AACtB,WAAA,KAAK,GAAG,kBAAkB;AAAA,EAAA;AAE/B,MAAA,QAAQ,sBAAsB,OAAO;AAChC,WAAA,KAAK,GAAG,eAAe;AAAA,EAAA;AAG1B,QAAA,eAAe,QAAQ,IAAI,aAAa;AAE9C,MAAI,CAAC,gBAAgB,CAAC,QAAQ,mBAAmB;AACzC,UAAA,YAAY,UAAUC,wCAAwB;AAC7C,WAAA,KAAK,GAAG,SAAS;AAAA,EAAA;AAEnB,SAAA;AACT;;"}
|
|
@@ -41,35 +41,34 @@ const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
|
41
41
|
root: ROOT
|
|
42
42
|
});
|
|
43
43
|
};
|
|
44
|
-
const generate = async () => {
|
|
44
|
+
const generate = async (opts) => {
|
|
45
45
|
if (routeGenerationDisabled()) {
|
|
46
46
|
return;
|
|
47
47
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (filePath === routerGenerator.resolveConfigPath({ configDirectory: ROOT })) {
|
|
57
|
-
initConfigAndGenerator();
|
|
58
|
-
return;
|
|
48
|
+
let generatorEvent = void 0;
|
|
49
|
+
if (opts) {
|
|
50
|
+
const filePath = node_path.normalize(opts.file);
|
|
51
|
+
if (filePath === routerGenerator.resolveConfigPath({ configDirectory: ROOT })) {
|
|
52
|
+
initConfigAndGenerator();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
generatorEvent = { path: filePath, type: opts.event };
|
|
59
56
|
}
|
|
60
57
|
try {
|
|
61
|
-
await generator.run(
|
|
58
|
+
await generator.run(generatorEvent);
|
|
59
|
+
globalThis.TSR_ROUTES_BY_ID_MAP = generator.getRoutesByFileMap();
|
|
62
60
|
} catch (e) {
|
|
63
61
|
console.error(e);
|
|
64
62
|
}
|
|
65
63
|
};
|
|
66
64
|
return {
|
|
67
|
-
name: "router-generator
|
|
65
|
+
name: "tanstack:router-generator",
|
|
68
66
|
enforce: "pre",
|
|
69
67
|
async watchChange(id, { event }) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
68
|
+
await generate({
|
|
69
|
+
file: id,
|
|
70
|
+
event
|
|
71
|
+
});
|
|
73
72
|
},
|
|
74
73
|
async buildStart() {
|
|
75
74
|
await generate();
|
|
@@ -89,7 +88,7 @@ const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
|
89
88
|
rspack(compiler) {
|
|
90
89
|
initConfigAndGenerator();
|
|
91
90
|
let handle = null;
|
|
92
|
-
compiler.hooks.beforeRun.tapPromise(PLUGIN_NAME, generate);
|
|
91
|
+
compiler.hooks.beforeRun.tapPromise(PLUGIN_NAME, () => generate());
|
|
93
92
|
compiler.hooks.watchRun.tapPromise(PLUGIN_NAME, async () => {
|
|
94
93
|
if (handle) {
|
|
95
94
|
return;
|
|
@@ -108,7 +107,7 @@ const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
|
108
107
|
webpack(compiler) {
|
|
109
108
|
initConfigAndGenerator();
|
|
110
109
|
let handle = null;
|
|
111
|
-
compiler.hooks.beforeRun.tapPromise(PLUGIN_NAME, generate);
|
|
110
|
+
compiler.hooks.beforeRun.tapPromise(PLUGIN_NAME, () => generate());
|
|
112
111
|
compiler.hooks.watchRun.tapPromise(PLUGIN_NAME, async () => {
|
|
113
112
|
if (handle) {
|
|
114
113
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-generator-plugin.cjs","sources":["../../../src/core/router-generator-plugin.ts"],"sourcesContent":["import { isAbsolute, join, normalize } from 'node:path'\nimport { Generator, resolveConfigPath } from '@tanstack/router-generator'\
|
|
1
|
+
{"version":3,"file":"router-generator-plugin.cjs","sources":["../../../src/core/router-generator-plugin.ts"],"sourcesContent":["import { isAbsolute, join, normalize } from 'node:path'\nimport { Generator, resolveConfigPath } from '@tanstack/router-generator'\nimport { getConfig } from './config'\n\nimport type { GeneratorEvent } from '@tanstack/router-generator'\nimport type { FSWatcher } from 'chokidar'\nimport type { UnpluginFactory } from 'unplugin'\nimport type { Config } from './config'\n\nconst PLUGIN_NAME = 'unplugin:router-generator'\n\nexport const unpluginRouterGeneratorFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}) => {\n const ROOT: string = process.cwd()\n let userConfig = options as Config\n let generator: Generator\n\n const routeGenerationDisabled = () =>\n userConfig.enableRouteGeneration === false\n const getRoutesDirectoryPath = () => {\n return isAbsolute(userConfig.routesDirectory)\n ? userConfig.routesDirectory\n : join(ROOT, userConfig.routesDirectory)\n }\n\n const initConfigAndGenerator = () => {\n userConfig = getConfig(options, ROOT)\n generator = new Generator({\n config: userConfig,\n root: ROOT,\n })\n }\n\n const generate = async (opts?: {\n file: string\n event: 'create' | 'update' | 'delete'\n }) => {\n if (routeGenerationDisabled()) {\n return\n }\n let generatorEvent: GeneratorEvent | undefined = undefined\n if (opts) {\n const filePath = normalize(opts.file)\n if (filePath === resolveConfigPath({ configDirectory: ROOT })) {\n initConfigAndGenerator()\n return\n }\n generatorEvent = { path: filePath, type: opts.event }\n }\n\n try {\n await generator.run(generatorEvent)\n globalThis.TSR_ROUTES_BY_ID_MAP = generator.getRoutesByFileMap()\n } catch (e) {\n console.error(e)\n }\n }\n\n return {\n name: 'tanstack:router-generator',\n enforce: 'pre',\n async watchChange(id, { event }) {\n await generate({\n file: id,\n event,\n })\n },\n async buildStart() {\n await generate()\n },\n vite: {\n configResolved() {\n initConfigAndGenerator()\n },\n async buildStart() {\n if (this.environment.config.consumer === 'server') {\n // When building in environment mode, we only need to generate routes\n // for the client environment\n return\n }\n await generate()\n },\n sharedDuringBuild: true,\n },\n rspack(compiler) {\n initConfigAndGenerator()\n\n let handle: FSWatcher | null = null\n\n compiler.hooks.beforeRun.tapPromise(PLUGIN_NAME, () => generate())\n\n compiler.hooks.watchRun.tapPromise(PLUGIN_NAME, async () => {\n if (handle) {\n return\n }\n\n // rspack watcher doesn't register newly created files\n const routesDirectoryPath = getRoutesDirectoryPath()\n const chokidar = await import('chokidar')\n handle = chokidar\n .watch(routesDirectoryPath, { ignoreInitial: true })\n .on('add', generate)\n\n await generate()\n })\n\n compiler.hooks.watchClose.tap(PLUGIN_NAME, async () => {\n if (handle) {\n await handle.close()\n }\n })\n },\n webpack(compiler) {\n initConfigAndGenerator()\n\n let handle: FSWatcher | null = null\n\n compiler.hooks.beforeRun.tapPromise(PLUGIN_NAME, () => generate())\n\n compiler.hooks.watchRun.tapPromise(PLUGIN_NAME, async () => {\n if (handle) {\n return\n }\n\n // webpack watcher doesn't register newly created files\n const routesDirectoryPath = getRoutesDirectoryPath()\n const chokidar = await import('chokidar')\n handle = chokidar\n .watch(routesDirectoryPath, { ignoreInitial: true })\n .on('add', generate)\n\n await generate()\n })\n\n compiler.hooks.watchClose.tap(PLUGIN_NAME, async () => {\n if (handle) {\n await handle.close()\n }\n })\n\n compiler.hooks.done.tap(PLUGIN_NAME, () => {\n console.info('✅ ' + PLUGIN_NAME + ': route-tree generation done')\n })\n },\n }\n}\n"],"names":["isAbsolute","join","getConfig","Generator","normalize","resolveConfigPath"],"mappings":"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"}
|
|
@@ -6,44 +6,46 @@ const routeHmrStatement = require("./route-hmr-statement.cjs");
|
|
|
6
6
|
const utils = require("./utils.cjs");
|
|
7
7
|
const unpluginRouterHmrFactory = (options = {}) => {
|
|
8
8
|
let ROOT = process.cwd();
|
|
9
|
-
let userConfig = options;
|
|
10
9
|
return {
|
|
11
|
-
name: "router
|
|
10
|
+
name: "tanstack-router:hmr",
|
|
12
11
|
enforce: "pre",
|
|
13
|
-
transform
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
transform: {
|
|
13
|
+
filter: {
|
|
14
|
+
code: "createFileRoute("
|
|
15
|
+
},
|
|
16
|
+
handler(code, id) {
|
|
17
|
+
var _a;
|
|
18
|
+
if (!((_a = globalThis.TSR_ROUTES_BY_ID_MAP) == null ? void 0 : _a.has(id))) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
if (utils.debug) console.info("Adding HMR handling to route ", id);
|
|
22
|
+
const ast = routerUtils.parseAst({ code });
|
|
23
|
+
ast.program.body.push(routeHmrStatement.routeHmrStatement);
|
|
24
|
+
const result = routerUtils.generateFromAst(ast, {
|
|
25
|
+
sourceMaps: true,
|
|
26
|
+
filename: id,
|
|
27
|
+
sourceFileName: id
|
|
28
|
+
});
|
|
29
|
+
if (utils.debug) {
|
|
30
|
+
routerUtils.logDiff(code, result.code);
|
|
31
|
+
console.log("Output:\n", result.code + "\n\n");
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
16
34
|
}
|
|
17
|
-
if (utils.debug) console.info("Adding HMR handling to route ", id);
|
|
18
|
-
const ast = routerUtils.parseAst({ code });
|
|
19
|
-
ast.program.body.push(routeHmrStatement.routeHmrStatement);
|
|
20
|
-
const result = routerUtils.generateFromAst(ast, {
|
|
21
|
-
sourceMaps: true,
|
|
22
|
-
filename: id,
|
|
23
|
-
sourceFileName: id
|
|
24
|
-
});
|
|
25
|
-
if (utils.debug) {
|
|
26
|
-
routerUtils.logDiff(code, result.code);
|
|
27
|
-
console.log("Output:\n", result.code + "\n\n");
|
|
28
|
-
}
|
|
29
|
-
return result;
|
|
30
|
-
},
|
|
31
|
-
transformInclude(id) {
|
|
32
|
-
return utils.fileIsInRoutesDirectory(id, userConfig.routesDirectory);
|
|
33
35
|
},
|
|
34
36
|
vite: {
|
|
35
37
|
configResolved(config$1) {
|
|
36
38
|
ROOT = config$1.root;
|
|
37
|
-
|
|
39
|
+
config.getConfig(options, ROOT);
|
|
38
40
|
}
|
|
39
41
|
},
|
|
40
42
|
rspack() {
|
|
41
43
|
ROOT = process.cwd();
|
|
42
|
-
|
|
44
|
+
config.getConfig(options, ROOT);
|
|
43
45
|
},
|
|
44
46
|
webpack() {
|
|
45
47
|
ROOT = process.cwd();
|
|
46
|
-
|
|
48
|
+
config.getConfig(options, ROOT);
|
|
47
49
|
}
|
|
48
50
|
};
|
|
49
51
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-hmr-plugin.cjs","sources":["../../../src/core/router-hmr-plugin.ts"],"sourcesContent":["import { generateFromAst, logDiff, parseAst } from '@tanstack/router-utils'\nimport { getConfig } from './config'\nimport { routeHmrStatement } from './route-hmr-statement'\nimport { debug
|
|
1
|
+
{"version":3,"file":"router-hmr-plugin.cjs","sources":["../../../src/core/router-hmr-plugin.ts"],"sourcesContent":["import { generateFromAst, logDiff, parseAst } from '@tanstack/router-utils'\nimport { getConfig } from './config'\nimport { routeHmrStatement } from './route-hmr-statement'\nimport { debug } from './utils'\nimport type { Config } from './config'\nimport type { UnpluginFactory } from 'unplugin'\n\n/**\n * This plugin adds HMR support for file routes.\n * It is only added to the composed plugin in dev when autoCodeSplitting is disabled, since the code splitting plugin\n * handles HMR for code-split routes itself.\n */\nexport const unpluginRouterHmrFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}) => {\n let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n return {\n name: 'tanstack-router:hmr',\n enforce: 'pre',\n\n transform: {\n filter: {\n code: 'createFileRoute(',\n },\n handler(code, id) {\n if (!globalThis.TSR_ROUTES_BY_ID_MAP?.has(id)) {\n return null\n }\n\n if (debug) console.info('Adding HMR handling to route ', id)\n\n const ast = parseAst({ code })\n ast.program.body.push(routeHmrStatement)\n const result = generateFromAst(ast, {\n sourceMaps: true,\n filename: id,\n sourceFileName: id,\n })\n if (debug) {\n logDiff(code, result.code)\n console.log('Output:\\n', result.code + '\\n\\n')\n }\n return result\n },\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n userConfig = getConfig(options, ROOT)\n },\n },\n\n rspack() {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n },\n\n webpack() {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n },\n }\n}\n"],"names":["debug","parseAst","routeHmrStatement","generateFromAst","logDiff","config","getConfig"],"mappings":";;;;;;AAYO,MAAM,2BAET,CAAC,UAAU,OAAO;AAChB,MAAA,OAAe,QAAQ,IAAI;AAGxB,SAAA;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IAET,WAAW;AAAA,MACT,QAAQ;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,MAAM,IAAI;;AAChB,YAAI,GAAC,gBAAW,yBAAX,mBAAiC,IAAI,MAAK;AACtC,iBAAA;AAAA,QAAA;AAGT,YAAIA,MAAO,MAAA,SAAQ,KAAK,iCAAiC,EAAE;AAE3D,cAAM,MAAMC,YAAAA,SAAS,EAAE,MAAM;AACzB,YAAA,QAAQ,KAAK,KAAKC,kBAAAA,iBAAiB;AACjC,cAAA,SAASC,4BAAgB,KAAK;AAAA,UAClC,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,gBAAgB;AAAA,QAAA,CACjB;AACD,YAAIH,aAAO;AACDI,8BAAA,MAAM,OAAO,IAAI;AACzB,kBAAQ,IAAI,aAAa,OAAO,OAAO,MAAM;AAAA,QAAA;AAExC,eAAA;AAAA,MAAA;AAAA,IAEX;AAAA,IAEA,MAAM;AAAA,MACJ,eAAeC,UAAQ;AACrB,eAAOA,SAAO;AACDC,eAAA,UAAU,SAAS,IAAI;AAAA,MAAA;AAAA,IAExC;AAAA,IAEA,SAAS;AACP,aAAO,QAAQ,IAAI;AACNA,aAAA,UAAU,SAAS,IAAI;AAAA,IACtC;AAAA,IAEA,UAAU;AACR,aAAO,QAAQ,IAAI;AACNA,aAAA,UAAU,SAAS,IAAI;AAAA,IAAA;AAAA,EAExC;AACF;;"}
|
package/dist/cjs/core/utils.cjs
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const node_path = require("node:path");
|
|
4
3
|
const debug = process.env.TSR_VITE_DEBUG && ["true", "router-plugin"].includes(process.env.TSR_VITE_DEBUG);
|
|
5
|
-
function fileIsInRoutesDirectory(filePath, routesDirectory) {
|
|
6
|
-
const routesDirectoryPath = node_path.isAbsolute(routesDirectory) ? routesDirectory : node_path.join(process.cwd(), routesDirectory);
|
|
7
|
-
const path = node_path.normalize(filePath);
|
|
8
|
-
return path.startsWith(routesDirectoryPath);
|
|
9
|
-
}
|
|
10
4
|
exports.debug = debug;
|
|
11
|
-
exports.fileIsInRoutesDirectory = fileIsInRoutesDirectory;
|
|
12
5
|
//# sourceMappingURL=utils.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.cjs","sources":["../../../src/core/utils.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"utils.cjs","sources":["../../../src/core/utils.ts"],"sourcesContent":["export const debug =\n process.env.TSR_VITE_DEBUG &&\n ['true', 'router-plugin'].includes(process.env.TSR_VITE_DEBUG)\n"],"names":[],"mappings":";;AAAa,MAAA,QACX,QAAQ,IAAI,kBACZ,CAAC,QAAQ,eAAe,EAAE,SAAS,QAAQ,IAAI,cAAc;;"}
|
|
@@ -520,7 +520,6 @@ These should either have their export statements removed or be imported from ano
|
|
|
520
520
|
}
|
|
521
521
|
function detectCodeSplitGroupingsFromRoute(opts) {
|
|
522
522
|
const ast = parseAst(opts);
|
|
523
|
-
let routeId = "";
|
|
524
523
|
let codeSplitGroupings = void 0;
|
|
525
524
|
babel.traverse(ast, {
|
|
526
525
|
Program: {
|
|
@@ -533,22 +532,9 @@ function detectCodeSplitGroupingsFromRoute(opts) {
|
|
|
533
532
|
if (!(path.node.callee.name === "createRoute" || path.node.callee.name === "createFileRoute")) {
|
|
534
533
|
return;
|
|
535
534
|
}
|
|
536
|
-
|
|
537
|
-
if (t.
|
|
538
|
-
|
|
539
|
-
if (t.isIdentifier(callee.callee)) {
|
|
540
|
-
const firstArg = callee.arguments[0];
|
|
541
|
-
if (t.isStringLiteral(firstArg)) {
|
|
542
|
-
routeId = firstArg.value;
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
}
|
|
546
|
-
const options = resolveIdentifier(
|
|
547
|
-
path,
|
|
548
|
-
path.parentPath.node.arguments[0]
|
|
549
|
-
);
|
|
550
|
-
if (t.isObjectExpression(options)) {
|
|
551
|
-
options.properties.forEach((prop) => {
|
|
535
|
+
function babelHandleSplittingGroups(routeOptions) {
|
|
536
|
+
if (t.isObjectExpression(routeOptions)) {
|
|
537
|
+
routeOptions.properties.forEach((prop) => {
|
|
552
538
|
if (t.isObjectProperty(prop)) {
|
|
553
539
|
if (t.isIdentifier(prop.key)) {
|
|
554
540
|
if (prop.key.name === "codeSplitGroupings") {
|
|
@@ -580,12 +566,25 @@ function detectCodeSplitGroupingsFromRoute(opts) {
|
|
|
580
566
|
});
|
|
581
567
|
}
|
|
582
568
|
}
|
|
569
|
+
if (t.isCallExpression(path.parentPath.node)) {
|
|
570
|
+
const options = resolveIdentifier(
|
|
571
|
+
path,
|
|
572
|
+
path.parentPath.node.arguments[0]
|
|
573
|
+
);
|
|
574
|
+
babelHandleSplittingGroups(options);
|
|
575
|
+
} else if (t.isVariableDeclarator(path.parentPath.node)) {
|
|
576
|
+
const caller = resolveIdentifier(path, path.parentPath.node.init);
|
|
577
|
+
if (t.isCallExpression(caller)) {
|
|
578
|
+
const options = resolveIdentifier(path, caller.arguments[0]);
|
|
579
|
+
babelHandleSplittingGroups(options);
|
|
580
|
+
}
|
|
581
|
+
}
|
|
583
582
|
}
|
|
584
583
|
});
|
|
585
584
|
}
|
|
586
585
|
}
|
|
587
586
|
});
|
|
588
|
-
return { groupings: codeSplitGroupings
|
|
587
|
+
return { groupings: codeSplitGroupings };
|
|
589
588
|
}
|
|
590
589
|
function getImportSpecifierAndPathFromLocalName(programPath, name) {
|
|
591
590
|
let specifier = null;
|