@tanstack/router-plugin 1.43.5 → 1.43.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 +56 -12
- package/dist/cjs/code-splitter.cjs.map +1 -1
- package/dist/cjs/composed.cjs +1 -4
- package/dist/cjs/composed.cjs.map +1 -1
- package/dist/cjs/router-generator.cjs +43 -1
- package/dist/cjs/router-generator.cjs.map +1 -1
- package/dist/cjs/rspack.cjs +4 -2
- package/dist/cjs/rspack.cjs.map +1 -1
- package/dist/cjs/rspack.d.cts +3 -12
- package/dist/cjs/webpack.cjs +22 -0
- package/dist/cjs/webpack.cjs.map +1 -0
- package/dist/cjs/webpack.d.cts +86 -0
- package/dist/esm/code-splitter.js +56 -12
- package/dist/esm/code-splitter.js.map +1 -1
- package/dist/esm/composed.js +1 -4
- package/dist/esm/composed.js.map +1 -1
- package/dist/esm/router-generator.js +22 -2
- package/dist/esm/router-generator.js.map +1 -1
- package/dist/esm/rspack.d.ts +3 -12
- package/dist/esm/rspack.js +5 -3
- package/dist/esm/rspack.js.map +1 -1
- package/dist/esm/webpack.d.ts +86 -0
- package/dist/esm/webpack.js +22 -0
- package/dist/esm/webpack.js.map +1 -0
- package/package.json +17 -2
- package/src/code-splitter.ts +69 -12
- package/src/composed.ts +1 -9
- package/src/router-generator.ts +28 -4
- package/src/rspack.ts +5 -13
- package/src/webpack.ts +54 -0
|
@@ -31,6 +31,8 @@ plugins: [
|
|
|
31
31
|
`);
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
+
const PLUGIN_NAME = "unplugin:router-code-splitter";
|
|
35
|
+
const JoinedSplitPrefix = constants.splitPrefix + ":";
|
|
34
36
|
const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
35
37
|
const debug = Boolean(process.env.TSR_VITE_DEBUG);
|
|
36
38
|
let ROOT = process.cwd();
|
|
@@ -49,11 +51,6 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
49
51
|
if (debug) console.info("");
|
|
50
52
|
if (debug) console.info("");
|
|
51
53
|
if (debug) console.info("");
|
|
52
|
-
if (debug) console.info("");
|
|
53
|
-
if (debug) console.info("");
|
|
54
|
-
if (debug) console.info("");
|
|
55
|
-
if (debug) console.info("");
|
|
56
|
-
if (debug) console.info("");
|
|
57
54
|
return compiledVirtualRoute;
|
|
58
55
|
};
|
|
59
56
|
const handleCompilingFile = async (code, id) => {
|
|
@@ -70,13 +67,6 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
70
67
|
if (debug) console.info("");
|
|
71
68
|
if (debug) console.info("");
|
|
72
69
|
if (debug) console.info("");
|
|
73
|
-
if (debug) console.info("");
|
|
74
|
-
if (debug) console.info("");
|
|
75
|
-
if (debug) console.info("");
|
|
76
|
-
if (debug) console.info("");
|
|
77
|
-
if (debug) console.info("");
|
|
78
|
-
if (debug) console.info("");
|
|
79
|
-
if (debug) console.info("");
|
|
80
70
|
return compiledReferenceRoute;
|
|
81
71
|
};
|
|
82
72
|
return {
|
|
@@ -115,6 +105,20 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
115
105
|
}
|
|
116
106
|
return null;
|
|
117
107
|
},
|
|
108
|
+
transformInclude(transformId) {
|
|
109
|
+
var _a;
|
|
110
|
+
if (!((_a = userConfig.experimental) == null ? void 0 : _a.enableCodeSplitting)) {
|
|
111
|
+
return void 0;
|
|
112
|
+
}
|
|
113
|
+
let id = transformId;
|
|
114
|
+
if (id.startsWith(JoinedSplitPrefix)) {
|
|
115
|
+
id = id.replace(JoinedSplitPrefix, "");
|
|
116
|
+
}
|
|
117
|
+
if (fileIsInRoutesDirectory(id, userConfig.routesDirectory) || id.includes(constants.splitPrefix)) {
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
return false;
|
|
121
|
+
},
|
|
118
122
|
vite: {
|
|
119
123
|
async configResolved(config$1) {
|
|
120
124
|
ROOT = config$1.root;
|
|
@@ -122,7 +126,47 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
122
126
|
}
|
|
123
127
|
},
|
|
124
128
|
async rspack(compiler) {
|
|
129
|
+
ROOT = process.cwd();
|
|
130
|
+
compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {
|
|
131
|
+
self.normalModuleFactory.hooks.beforeResolve.tap(
|
|
132
|
+
PLUGIN_NAME,
|
|
133
|
+
(resolveData) => {
|
|
134
|
+
if (resolveData.request.includes(JoinedSplitPrefix)) {
|
|
135
|
+
resolveData.request = resolveData.request.replace(
|
|
136
|
+
JoinedSplitPrefix,
|
|
137
|
+
""
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
);
|
|
142
|
+
});
|
|
143
|
+
userConfig = await config.getConfig(options, ROOT);
|
|
144
|
+
},
|
|
145
|
+
async webpack(compiler) {
|
|
146
|
+
var _a;
|
|
147
|
+
ROOT = process.cwd();
|
|
148
|
+
compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {
|
|
149
|
+
self.normalModuleFactory.hooks.beforeResolve.tap(
|
|
150
|
+
PLUGIN_NAME,
|
|
151
|
+
(resolveData) => {
|
|
152
|
+
if (resolveData.request.includes(JoinedSplitPrefix)) {
|
|
153
|
+
resolveData.request = resolveData.request.replace(
|
|
154
|
+
JoinedSplitPrefix,
|
|
155
|
+
""
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
);
|
|
160
|
+
});
|
|
125
161
|
userConfig = await config.getConfig(options, ROOT);
|
|
162
|
+
if (((_a = userConfig.experimental) == null ? void 0 : _a.enableCodeSplitting) && compiler.options.mode === "production") {
|
|
163
|
+
compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {
|
|
164
|
+
console.log("✅ " + PLUGIN_NAME + ": code-splitting done!");
|
|
165
|
+
setTimeout(() => {
|
|
166
|
+
process.exit(0);
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
}
|
|
126
170
|
}
|
|
127
171
|
};
|
|
128
172
|
};
|
|
@@ -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'\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 if (debug) console.info('')\n if (debug) console.info('')\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 if (debug) console.info('')\n if (debug) console.info('')\n if (debug) console.info('')\n if (debug) console.info('')\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 vite: {\n async configResolved(config) {\n ROOT = config.root\n userConfig = await getConfig(options, ROOT)\n },\n },\n\n async rspack(compiler) {\n userConfig = await getConfig(options, ROOT)\n },\n }\n}\n"],"names":["isAbsolute","join","compileCodeSplitVirtualRoute","compileCodeSplitReferenceRoute","splitPrefix","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 = 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.log('✅ ' + 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/composed.cjs
CHANGED
|
@@ -6,10 +6,7 @@ const unpluginRouterComposedFactory = (options = {}, meta) => {
|
|
|
6
6
|
const routerGenerator$1 = routerGenerator.unpluginRouterGeneratorFactory(options);
|
|
7
7
|
const routerGeneratorOptions = Array.isArray(routerGenerator$1) ? routerGenerator$1 : [routerGenerator$1];
|
|
8
8
|
const routerCodeSplitter = codeSplitter.unpluginRouterCodeSplitterFactory(options, meta);
|
|
9
|
-
|
|
10
|
-
if (meta.framework === "rspack") {
|
|
11
|
-
routerCodeSplitterOptions = [];
|
|
12
|
-
}
|
|
9
|
+
const routerCodeSplitterOptions = Array.isArray(routerCodeSplitter) ? routerCodeSplitter : [routerCodeSplitter];
|
|
13
10
|
return [...routerGeneratorOptions, ...routerCodeSplitterOptions];
|
|
14
11
|
};
|
|
15
12
|
exports.unpluginRouterComposedFactory = unpluginRouterComposedFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composed.cjs","sources":["../../src/composed.ts"],"sourcesContent":["import { unpluginRouterGeneratorFactory } from './router-generator'\nimport { unpluginRouterCodeSplitterFactory } from './code-splitter'\n\nimport type { Config } from './config'\nimport type { UnpluginFactory } from 'unplugin'\n\nexport const unpluginRouterComposedFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, meta) => {\n const routerGenerator = unpluginRouterGeneratorFactory(options, meta)\n\n const routerGeneratorOptions = Array.isArray(routerGenerator)\n ? routerGenerator\n : [routerGenerator]\n\n const routerCodeSplitter = unpluginRouterCodeSplitterFactory(options, meta)\n
|
|
1
|
+
{"version":3,"file":"composed.cjs","sources":["../../src/composed.ts"],"sourcesContent":["import { unpluginRouterGeneratorFactory } from './router-generator'\nimport { unpluginRouterCodeSplitterFactory } from './code-splitter'\n\nimport type { Config } from './config'\nimport type { UnpluginFactory } from 'unplugin'\n\nexport const unpluginRouterComposedFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, meta) => {\n const routerGenerator = unpluginRouterGeneratorFactory(options, meta)\n\n const routerGeneratorOptions = Array.isArray(routerGenerator)\n ? routerGenerator\n : [routerGenerator]\n\n const routerCodeSplitter = unpluginRouterCodeSplitterFactory(options, meta)\n const routerCodeSplitterOptions = Array.isArray(routerCodeSplitter)\n ? routerCodeSplitter\n : [routerCodeSplitter]\n\n return [...routerGeneratorOptions, ...routerCodeSplitterOptions]\n}\n"],"names":["routerGenerator","unpluginRouterGeneratorFactory","unpluginRouterCodeSplitterFactory"],"mappings":";;;;AAMO,MAAM,gCAET,CAAC,UAAU,IAAI,SAAS;AACpB,QAAAA,oBAAkBC,+CAA+B,OAAa;AAEpE,QAAM,yBAAyB,MAAM,QAAQD,iBAAe,IACxDA,oBACA,CAACA,iBAAe;AAEd,QAAA,qBAAqBE,aAAAA,kCAAkC,SAAS,IAAI;AAC1E,QAAM,4BAA4B,MAAM,QAAQ,kBAAkB,IAC9D,qBACA,CAAC,kBAAkB;AAEvB,SAAO,CAAC,GAAG,wBAAwB,GAAG,yBAAyB;AACjE;;"}
|
|
@@ -1,4 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
|
+
for (let key of __getOwnPropNames(from))
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
12
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
|
+
}
|
|
14
|
+
return to;
|
|
15
|
+
};
|
|
16
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
17
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
18
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
19
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
20
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
2
24
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
25
|
const node_path = require("node:path");
|
|
4
26
|
const routerGenerator = require("@tanstack/router-generator");
|
|
@@ -13,6 +35,9 @@ const PLUGIN_NAME = "unplugin:router-generator";
|
|
|
13
35
|
const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
14
36
|
let ROOT = process.cwd();
|
|
15
37
|
let userConfig = options;
|
|
38
|
+
const getRoutesDirectoryPath = () => {
|
|
39
|
+
return node_path.isAbsolute(userConfig.routesDirectory) ? userConfig.routesDirectory : node_path.join(ROOT, userConfig.routesDirectory);
|
|
40
|
+
};
|
|
16
41
|
const generate = async () => {
|
|
17
42
|
if (checkLock()) {
|
|
18
43
|
return;
|
|
@@ -36,7 +61,7 @@ const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
|
36
61
|
if (event === "update" && filePath === node_path.resolve(userConfig.generatedRouteTree)) {
|
|
37
62
|
return;
|
|
38
63
|
}
|
|
39
|
-
const routesDirectoryPath =
|
|
64
|
+
const routesDirectoryPath = getRoutesDirectoryPath();
|
|
40
65
|
if (filePath.startsWith(routesDirectoryPath)) {
|
|
41
66
|
await generate();
|
|
42
67
|
}
|
|
@@ -66,6 +91,23 @@ const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
|
66
91
|
compiler.hooks.watchRun.tap(PLUGIN_NAME, async () => {
|
|
67
92
|
await run(generate);
|
|
68
93
|
});
|
|
94
|
+
},
|
|
95
|
+
async webpack(compiler) {
|
|
96
|
+
userConfig = await config.getConfig(options, ROOT);
|
|
97
|
+
await run(generate);
|
|
98
|
+
const routesDirectoryPath = getRoutesDirectoryPath();
|
|
99
|
+
const chokidar = await import("chokidar");
|
|
100
|
+
chokidar.watch(routesDirectoryPath).on("add", async () => {
|
|
101
|
+
await run(generate);
|
|
102
|
+
});
|
|
103
|
+
if (compiler.options.mode === "production") {
|
|
104
|
+
compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {
|
|
105
|
+
console.log("✅ " + PLUGIN_NAME + ": route-tree generation done");
|
|
106
|
+
setTimeout(() => {
|
|
107
|
+
process.exit(0);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
}
|
|
69
111
|
}
|
|
70
112
|
};
|
|
71
113
|
};
|
|
@@ -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 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 = await 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 =
|
|
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 = await 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 = await getConfig(options, ROOT)\n\n await run(generate)\n },\n },\n async rspack(compiler) {\n userConfig = await getConfig(options, ROOT)\n\n await run(generate)\n\n compiler.hooks.watchRun.tap(PLUGIN_NAME, async () => {\n await run(generate)\n })\n },\n async webpack(compiler) {\n userConfig = await getConfig(options, ROOT)\n\n await run(generate)\n\n // webpack watcher doesn't register newly created files\n const routesDirectoryPath = getRoutesDirectoryPath()\n const chokidar = await import('chokidar')\n chokidar.watch(routesDirectoryPath).on('add', async () => {\n await run(generate)\n })\n\n if (compiler.options.mode === 'production') {\n compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {\n console.log('✅ ' + 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,mBAAA,MAAMC,OAAAA,UAAU,SAAS,IAAI;AAC1C;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,qBAAA,MAAMF,OAAAA,UAAU,SAAS,IAAI;AAE1C,cAAM,IAAI,QAAQ;AAAA,MACpB;AAAA,IACF;AAAA,IACA,MAAM,OAAO,UAAU;AACR,mBAAA,MAAMA,OAAAA,UAAU,SAAS,IAAI;AAE1C,YAAM,IAAI,QAAQ;AAElB,eAAS,MAAM,SAAS,IAAI,aAAa,YAAY;AACnD,cAAM,IAAI,QAAQ;AAAA,MAAA,CACnB;AAAA,IACH;AAAA,IACA,MAAM,QAAQ,UAAU;AACT,mBAAA,MAAMA,OAAAA,UAAU,SAAS,IAAI;AAE1C,YAAM,IAAI,QAAQ;AAGlB,YAAM,sBAAsB;AACtB,YAAA,WAAW,MAAM,OAAO,UAAU;AACxC,eAAS,MAAM,mBAAmB,EAAE,GAAG,OAAO,YAAY;AACxD,cAAM,IAAI,QAAQ;AAAA,MAAA,CACnB;AAEG,UAAA,SAAS,QAAQ,SAAS,cAAc;AAC1C,iBAAS,MAAM,KAAK,IAAI,aAAa,CAAC,UAAU;AACtC,kBAAA,IAAI,OAAO,cAAc,8BAA8B;AAC/D,qBAAW,MAAM;AACf,oBAAQ,KAAK,CAAC;AAAA,UAAA,CACf;AAAA,QAAA,CACF;AAAA,MACH;AAAA,IACF;AAAA,EAAA;AAEJ;;"}
|
package/dist/cjs/rspack.cjs
CHANGED
|
@@ -8,13 +8,15 @@ const composed = require("./composed.cjs");
|
|
|
8
8
|
const TanStackRouterGeneratorRspack = /* @__PURE__ */ unplugin.createRspackPlugin(
|
|
9
9
|
routerGenerator.unpluginRouterGeneratorFactory
|
|
10
10
|
);
|
|
11
|
-
const
|
|
11
|
+
const TanStackRouterCodeSplitterRspack = /* @__PURE__ */ unplugin.createRspackPlugin(
|
|
12
|
+
codeSplitter.unpluginRouterCodeSplitterFactory
|
|
13
|
+
);
|
|
12
14
|
const TanStackRouterRspack = /* @__PURE__ */ unplugin.createRspackPlugin(
|
|
13
15
|
composed.unpluginRouterComposedFactory
|
|
14
16
|
);
|
|
15
17
|
exports.configSchema = config.configSchema;
|
|
18
|
+
exports.TanStackRouterCodeSplitterRspack = TanStackRouterCodeSplitterRspack;
|
|
16
19
|
exports.TanStackRouterGeneratorRspack = TanStackRouterGeneratorRspack;
|
|
17
20
|
exports.TanStackRouterRspack = TanStackRouterRspack;
|
|
18
21
|
exports.default = TanStackRouterRspack;
|
|
19
|
-
exports.unstable_TanStackRouterCodeSplitterRspack = unstable_TanStackRouterCodeSplitterRspack;
|
|
20
22
|
//# sourceMappingURL=rspack.cjs.map
|
package/dist/cjs/rspack.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rspack.cjs","sources":["../../src/rspack.ts"],"sourcesContent":["import { createRspackPlugin } from 'unplugin'\nimport { unpluginRouterCodeSplitterFactory } from './code-splitter'\nimport { configSchema } from './config'\nimport { unpluginRouterGeneratorFactory } from './router-generator'\nimport { unpluginRouterComposedFactory } from './composed'\nimport type { Config } from './config'\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterGeneratorRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterGeneratorRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterGeneratorFactory,\n)\n\n/**\n * @
|
|
1
|
+
{"version":3,"file":"rspack.cjs","sources":["../../src/rspack.ts"],"sourcesContent":["import { createRspackPlugin } from 'unplugin'\nimport { unpluginRouterCodeSplitterFactory } from './code-splitter'\nimport { configSchema } from './config'\nimport { unpluginRouterGeneratorFactory } from './router-generator'\nimport { unpluginRouterComposedFactory } from './composed'\nimport type { Config } from './config'\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterGeneratorRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterGeneratorRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterGeneratorFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterCodeSplitterRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterCodeSplitterRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterCodeSplitterFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterComposedFactory,\n)\n\nexport default TanStackRouterRspack\nexport {\n configSchema,\n TanStackRouterRspack,\n TanStackRouterGeneratorRspack,\n TanStackRouterCodeSplitterRspack,\n}\nexport type { Config }\n"],"names":["createRspackPlugin","unpluginRouterGeneratorFactory","unpluginRouterCodeSplitterFactory","unpluginRouterComposedFactory"],"mappings":";;;;;;;AAoBA,MAAM,gCAAgDA,yBAAA;AAAA,EACpDC,gBAAA;AACF;AAeA,MAAM,mCAAmDD,yBAAA;AAAA,EACvDE,aAAA;AACF;AAeA,MAAM,uBAAuCF,yBAAA;AAAA,EAC3CG,SAAA;AACF;;;;;;"}
|
package/dist/cjs/rspack.d.cts
CHANGED
|
@@ -32,28 +32,19 @@ declare const TanStackRouterGeneratorRspack: (options?: Partial<{
|
|
|
32
32
|
routeFileIgnorePattern?: string | undefined;
|
|
33
33
|
}> | undefined) => _rspack_core_dist_config_zod.RspackPluginInstance;
|
|
34
34
|
/**
|
|
35
|
-
* @experimental Do not use this plugin yet
|
|
36
|
-
*
|
|
37
|
-
* Unplugin's Rspack integration doesn't support the `resolveId` and `transform` hooks.
|
|
38
|
-
* The code-splitter won't work with Rspack and will probably break your dev and build.
|
|
39
|
-
*
|
|
40
|
-
* If you're familiar with Rspack and know how to overcome our `resolveId` and `transform`
|
|
41
|
-
* limitations, please let us know.
|
|
42
|
-
* We'd love to support it, but we're not sure how to do it yet 😅.
|
|
43
|
-
*
|
|
44
35
|
* @example
|
|
45
36
|
* ```ts
|
|
46
37
|
* export default defineConfig({
|
|
47
38
|
* // ...
|
|
48
39
|
* tools: {
|
|
49
40
|
* rspack: {
|
|
50
|
-
* plugins: [
|
|
41
|
+
* plugins: [TanStackRouterCodeSplitterRspack()],
|
|
51
42
|
* },
|
|
52
43
|
* },
|
|
53
44
|
* })
|
|
54
45
|
* ```
|
|
55
46
|
*/
|
|
56
|
-
declare const
|
|
47
|
+
declare const TanStackRouterCodeSplitterRspack: (options?: Partial<{
|
|
57
48
|
routeFileIgnorePrefix: string;
|
|
58
49
|
routesDirectory: string;
|
|
59
50
|
generatedRouteTree: string;
|
|
@@ -103,5 +94,5 @@ declare const TanStackRouterRspack: (options?: Partial<{
|
|
|
103
94
|
routeFileIgnorePattern?: string | undefined;
|
|
104
95
|
}> | undefined) => _rspack_core_dist_config_zod.RspackPluginInstance;
|
|
105
96
|
export default TanStackRouterRspack;
|
|
106
|
-
export { configSchema, TanStackRouterRspack, TanStackRouterGeneratorRspack,
|
|
97
|
+
export { configSchema, TanStackRouterRspack, TanStackRouterGeneratorRspack, TanStackRouterCodeSplitterRspack, };
|
|
107
98
|
export type { Config };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const unplugin = require("unplugin");
|
|
4
|
+
const codeSplitter = require("./code-splitter.cjs");
|
|
5
|
+
const config = require("./config.cjs");
|
|
6
|
+
const routerGenerator = require("./router-generator.cjs");
|
|
7
|
+
const composed = require("./composed.cjs");
|
|
8
|
+
const TanStackRouterGeneratorWebpack = /* @__PURE__ */ unplugin.createWebpackPlugin(
|
|
9
|
+
routerGenerator.unpluginRouterGeneratorFactory
|
|
10
|
+
);
|
|
11
|
+
const TanStackRouterCodeSplitterWebpack = /* @__PURE__ */ unplugin.createWebpackPlugin(
|
|
12
|
+
codeSplitter.unpluginRouterCodeSplitterFactory
|
|
13
|
+
);
|
|
14
|
+
const TanStackRouterWebpack = /* @__PURE__ */ unplugin.createWebpackPlugin(
|
|
15
|
+
composed.unpluginRouterComposedFactory
|
|
16
|
+
);
|
|
17
|
+
exports.configSchema = config.configSchema;
|
|
18
|
+
exports.TanStackRouterCodeSplitterWebpack = TanStackRouterCodeSplitterWebpack;
|
|
19
|
+
exports.TanStackRouterGeneratorWebpack = TanStackRouterGeneratorWebpack;
|
|
20
|
+
exports.TanStackRouterWebpack = TanStackRouterWebpack;
|
|
21
|
+
exports.default = TanStackRouterWebpack;
|
|
22
|
+
//# sourceMappingURL=webpack.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webpack.cjs","sources":["../../src/webpack.ts"],"sourcesContent":["import { createWebpackPlugin } from 'unplugin'\nimport { unpluginRouterCodeSplitterFactory } from './code-splitter'\nimport { configSchema } from './config'\nimport { unpluginRouterGeneratorFactory } from './router-generator'\nimport { unpluginRouterComposedFactory } from './composed'\nimport type { Config } from './config'\n\n/**\n * @example\n * ```ts\n * export default {\n * // ...\n * plugins: [TanStackRouterGeneratorWebpack()],\n * }\n * ```\n */\nconst TanStackRouterGeneratorWebpack = /* #__PURE__ */ createWebpackPlugin(\n unpluginRouterGeneratorFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default {\n * // ...\n * plugins: [TanStackRouterCodeSplitterWebpack()],\n * }\n * ```\n */\nconst TanStackRouterCodeSplitterWebpack = /* #__PURE__ */ createWebpackPlugin(\n unpluginRouterCodeSplitterFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default {\n * // ...\n * plugins: [TanStackRouterWebpack()],\n * }\n * ```\n */\nconst TanStackRouterWebpack = /* #__PURE__ */ createWebpackPlugin(\n unpluginRouterComposedFactory,\n)\n\nexport default TanStackRouterWebpack\nexport {\n configSchema,\n TanStackRouterWebpack,\n TanStackRouterGeneratorWebpack,\n TanStackRouterCodeSplitterWebpack,\n}\nexport type { Config }\n"],"names":["createWebpackPlugin","unpluginRouterGeneratorFactory","unpluginRouterCodeSplitterFactory","unpluginRouterComposedFactory"],"mappings":";;;;;;;AAgBA,MAAM,iCAAiDA,yBAAA;AAAA,EACrDC,gBAAA;AACF;AAWA,MAAM,oCAAoDD,yBAAA;AAAA,EACxDE,aAAA;AACF;AAWA,MAAM,wBAAwCF,yBAAA;AAAA,EAC5CG,SAAA;AACF;;;;;;"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { configSchema, Config } from './config.cjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* export default {
|
|
7
|
+
* // ...
|
|
8
|
+
* plugins: [TanStackRouterGeneratorWebpack()],
|
|
9
|
+
* }
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
declare const TanStackRouterGeneratorWebpack: (options?: Partial<{
|
|
13
|
+
routeFileIgnorePrefix: string;
|
|
14
|
+
routesDirectory: string;
|
|
15
|
+
generatedRouteTree: string;
|
|
16
|
+
quoteStyle: "single" | "double";
|
|
17
|
+
semicolons: boolean;
|
|
18
|
+
disableTypes: boolean;
|
|
19
|
+
addExtensions: boolean;
|
|
20
|
+
disableLogging: boolean;
|
|
21
|
+
routeTreeFileHeader: string[];
|
|
22
|
+
routeTreeFileFooter: string[];
|
|
23
|
+
enableRouteGeneration?: boolean | undefined;
|
|
24
|
+
experimental?: {
|
|
25
|
+
enableCodeSplitting?: boolean | undefined;
|
|
26
|
+
} | undefined;
|
|
27
|
+
routeFilePrefix?: string | undefined;
|
|
28
|
+
routeFileIgnorePattern?: string | undefined;
|
|
29
|
+
}> | undefined) => import('unplugin').WebpackPluginInstance;
|
|
30
|
+
/**
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* export default {
|
|
34
|
+
* // ...
|
|
35
|
+
* plugins: [TanStackRouterCodeSplitterWebpack()],
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
declare const TanStackRouterCodeSplitterWebpack: (options?: Partial<{
|
|
40
|
+
routeFileIgnorePrefix: string;
|
|
41
|
+
routesDirectory: string;
|
|
42
|
+
generatedRouteTree: string;
|
|
43
|
+
quoteStyle: "single" | "double";
|
|
44
|
+
semicolons: boolean;
|
|
45
|
+
disableTypes: boolean;
|
|
46
|
+
addExtensions: boolean;
|
|
47
|
+
disableLogging: boolean;
|
|
48
|
+
routeTreeFileHeader: string[];
|
|
49
|
+
routeTreeFileFooter: string[];
|
|
50
|
+
enableRouteGeneration?: boolean | undefined;
|
|
51
|
+
experimental?: {
|
|
52
|
+
enableCodeSplitting?: boolean | undefined;
|
|
53
|
+
} | undefined;
|
|
54
|
+
routeFilePrefix?: string | undefined;
|
|
55
|
+
routeFileIgnorePattern?: string | undefined;
|
|
56
|
+
}> | undefined) => import('unplugin').WebpackPluginInstance;
|
|
57
|
+
/**
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* export default {
|
|
61
|
+
* // ...
|
|
62
|
+
* plugins: [TanStackRouterWebpack()],
|
|
63
|
+
* }
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
declare const TanStackRouterWebpack: (options?: Partial<{
|
|
67
|
+
routeFileIgnorePrefix: string;
|
|
68
|
+
routesDirectory: string;
|
|
69
|
+
generatedRouteTree: string;
|
|
70
|
+
quoteStyle: "single" | "double";
|
|
71
|
+
semicolons: boolean;
|
|
72
|
+
disableTypes: boolean;
|
|
73
|
+
addExtensions: boolean;
|
|
74
|
+
disableLogging: boolean;
|
|
75
|
+
routeTreeFileHeader: string[];
|
|
76
|
+
routeTreeFileFooter: string[];
|
|
77
|
+
enableRouteGeneration?: boolean | undefined;
|
|
78
|
+
experimental?: {
|
|
79
|
+
enableCodeSplitting?: boolean | undefined;
|
|
80
|
+
} | undefined;
|
|
81
|
+
routeFilePrefix?: string | undefined;
|
|
82
|
+
routeFileIgnorePattern?: string | undefined;
|
|
83
|
+
}> | undefined) => import('unplugin').WebpackPluginInstance;
|
|
84
|
+
export default TanStackRouterWebpack;
|
|
85
|
+
export { configSchema, TanStackRouterWebpack, TanStackRouterGeneratorWebpack, TanStackRouterCodeSplitterWebpack, };
|
|
86
|
+
export type { Config };
|
|
@@ -29,6 +29,8 @@ plugins: [
|
|
|
29
29
|
`);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
+
const PLUGIN_NAME = "unplugin:router-code-splitter";
|
|
33
|
+
const JoinedSplitPrefix = splitPrefix + ":";
|
|
32
34
|
const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
33
35
|
const debug = Boolean(process.env.TSR_VITE_DEBUG);
|
|
34
36
|
let ROOT = process.cwd();
|
|
@@ -47,11 +49,6 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
47
49
|
if (debug) console.info("");
|
|
48
50
|
if (debug) console.info("");
|
|
49
51
|
if (debug) console.info("");
|
|
50
|
-
if (debug) console.info("");
|
|
51
|
-
if (debug) console.info("");
|
|
52
|
-
if (debug) console.info("");
|
|
53
|
-
if (debug) console.info("");
|
|
54
|
-
if (debug) console.info("");
|
|
55
52
|
return compiledVirtualRoute;
|
|
56
53
|
};
|
|
57
54
|
const handleCompilingFile = async (code, id) => {
|
|
@@ -68,13 +65,6 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
68
65
|
if (debug) console.info("");
|
|
69
66
|
if (debug) console.info("");
|
|
70
67
|
if (debug) console.info("");
|
|
71
|
-
if (debug) console.info("");
|
|
72
|
-
if (debug) console.info("");
|
|
73
|
-
if (debug) console.info("");
|
|
74
|
-
if (debug) console.info("");
|
|
75
|
-
if (debug) console.info("");
|
|
76
|
-
if (debug) console.info("");
|
|
77
|
-
if (debug) console.info("");
|
|
78
68
|
return compiledReferenceRoute;
|
|
79
69
|
};
|
|
80
70
|
return {
|
|
@@ -113,6 +103,20 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
113
103
|
}
|
|
114
104
|
return null;
|
|
115
105
|
},
|
|
106
|
+
transformInclude(transformId) {
|
|
107
|
+
var _a;
|
|
108
|
+
if (!((_a = userConfig.experimental) == null ? void 0 : _a.enableCodeSplitting)) {
|
|
109
|
+
return void 0;
|
|
110
|
+
}
|
|
111
|
+
let id = transformId;
|
|
112
|
+
if (id.startsWith(JoinedSplitPrefix)) {
|
|
113
|
+
id = id.replace(JoinedSplitPrefix, "");
|
|
114
|
+
}
|
|
115
|
+
if (fileIsInRoutesDirectory(id, userConfig.routesDirectory) || id.includes(splitPrefix)) {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
return false;
|
|
119
|
+
},
|
|
116
120
|
vite: {
|
|
117
121
|
async configResolved(config) {
|
|
118
122
|
ROOT = config.root;
|
|
@@ -120,7 +124,47 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
120
124
|
}
|
|
121
125
|
},
|
|
122
126
|
async rspack(compiler) {
|
|
127
|
+
ROOT = process.cwd();
|
|
128
|
+
compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {
|
|
129
|
+
self.normalModuleFactory.hooks.beforeResolve.tap(
|
|
130
|
+
PLUGIN_NAME,
|
|
131
|
+
(resolveData) => {
|
|
132
|
+
if (resolveData.request.includes(JoinedSplitPrefix)) {
|
|
133
|
+
resolveData.request = resolveData.request.replace(
|
|
134
|
+
JoinedSplitPrefix,
|
|
135
|
+
""
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
);
|
|
140
|
+
});
|
|
141
|
+
userConfig = await getConfig(options, ROOT);
|
|
142
|
+
},
|
|
143
|
+
async webpack(compiler) {
|
|
144
|
+
var _a;
|
|
145
|
+
ROOT = process.cwd();
|
|
146
|
+
compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {
|
|
147
|
+
self.normalModuleFactory.hooks.beforeResolve.tap(
|
|
148
|
+
PLUGIN_NAME,
|
|
149
|
+
(resolveData) => {
|
|
150
|
+
if (resolveData.request.includes(JoinedSplitPrefix)) {
|
|
151
|
+
resolveData.request = resolveData.request.replace(
|
|
152
|
+
JoinedSplitPrefix,
|
|
153
|
+
""
|
|
154
|
+
);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
);
|
|
158
|
+
});
|
|
123
159
|
userConfig = await getConfig(options, ROOT);
|
|
160
|
+
if (((_a = userConfig.experimental) == null ? void 0 : _a.enableCodeSplitting) && compiler.options.mode === "production") {
|
|
161
|
+
compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {
|
|
162
|
+
console.log("✅ " + PLUGIN_NAME + ": code-splitting done!");
|
|
163
|
+
setTimeout(() => {
|
|
164
|
+
process.exit(0);
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
}
|
|
124
168
|
}
|
|
125
169
|
};
|
|
126
170
|
};
|
|
@@ -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'\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 if (debug) console.info('')\n if (debug) console.info('')\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 if (debug) console.info('')\n if (debug) console.info('')\n if (debug) console.info('')\n if (debug) console.info('')\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 vite: {\n async configResolved(config) {\n ROOT = config.root\n userConfig = await getConfig(options, ROOT)\n },\n },\n\n async rspack(compiler) {\n userConfig = await getConfig(options, ROOT)\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;AAIO,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;AACtB,QAAA,MAAe,SAAA,KAAK,EAAE;AACtB,QAAA,MAAe,SAAA,KAAK,EAAE;AACtB,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;AACtB,QAAA,MAAe,SAAA,KAAK,EAAE;AACtB,QAAA,MAAe,SAAA,KAAK,EAAE;AACtB,QAAA,MAAe,SAAA,KAAK,EAAE;AACtB,QAAA,MAAe,SAAA,KAAK,EAAE;AACtB,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,MAAM;AAAA,MACJ,MAAM,eAAe,QAAQ;AAC3B,eAAO,OAAO;AACD,qBAAA,MAAM,UAAU,SAAS,IAAI;AAAA,MAC5C;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,UAAU;AACR,mBAAA,MAAM,UAAU,SAAS,IAAI;AAAA,IAC5C;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 = 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.log('✅ ' + 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/composed.js
CHANGED
|
@@ -4,10 +4,7 @@ const unpluginRouterComposedFactory = (options = {}, meta) => {
|
|
|
4
4
|
const routerGenerator = unpluginRouterGeneratorFactory(options);
|
|
5
5
|
const routerGeneratorOptions = Array.isArray(routerGenerator) ? routerGenerator : [routerGenerator];
|
|
6
6
|
const routerCodeSplitter = unpluginRouterCodeSplitterFactory(options, meta);
|
|
7
|
-
|
|
8
|
-
if (meta.framework === "rspack") {
|
|
9
|
-
routerCodeSplitterOptions = [];
|
|
10
|
-
}
|
|
7
|
+
const routerCodeSplitterOptions = Array.isArray(routerCodeSplitter) ? routerCodeSplitter : [routerCodeSplitter];
|
|
11
8
|
return [...routerGeneratorOptions, ...routerCodeSplitterOptions];
|
|
12
9
|
};
|
|
13
10
|
export {
|
package/dist/esm/composed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composed.js","sources":["../../src/composed.ts"],"sourcesContent":["import { unpluginRouterGeneratorFactory } from './router-generator'\nimport { unpluginRouterCodeSplitterFactory } from './code-splitter'\n\nimport type { Config } from './config'\nimport type { UnpluginFactory } from 'unplugin'\n\nexport const unpluginRouterComposedFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, meta) => {\n const routerGenerator = unpluginRouterGeneratorFactory(options, meta)\n\n const routerGeneratorOptions = Array.isArray(routerGenerator)\n ? routerGenerator\n : [routerGenerator]\n\n const routerCodeSplitter = unpluginRouterCodeSplitterFactory(options, meta)\n
|
|
1
|
+
{"version":3,"file":"composed.js","sources":["../../src/composed.ts"],"sourcesContent":["import { unpluginRouterGeneratorFactory } from './router-generator'\nimport { unpluginRouterCodeSplitterFactory } from './code-splitter'\n\nimport type { Config } from './config'\nimport type { UnpluginFactory } from 'unplugin'\n\nexport const unpluginRouterComposedFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, meta) => {\n const routerGenerator = unpluginRouterGeneratorFactory(options, meta)\n\n const routerGeneratorOptions = Array.isArray(routerGenerator)\n ? routerGenerator\n : [routerGenerator]\n\n const routerCodeSplitter = unpluginRouterCodeSplitterFactory(options, meta)\n const routerCodeSplitterOptions = Array.isArray(routerCodeSplitter)\n ? routerCodeSplitter\n : [routerCodeSplitter]\n\n return [...routerGeneratorOptions, ...routerCodeSplitterOptions]\n}\n"],"names":[],"mappings":";;AAMO,MAAM,gCAET,CAAC,UAAU,IAAI,SAAS;AACpB,QAAA,kBAAkB,+BAA+B,OAAa;AAEpE,QAAM,yBAAyB,MAAM,QAAQ,eAAe,IACxD,kBACA,CAAC,eAAe;AAEd,QAAA,qBAAqB,kCAAkC,SAAS,IAAI;AAC1E,QAAM,4BAA4B,MAAM,QAAQ,kBAAkB,IAC9D,qBACA,CAAC,kBAAkB;AAEvB,SAAO,CAAC,GAAG,wBAAwB,GAAG,yBAAyB;AACjE;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isAbsolute, join, normalize, resolve } from "node:path";
|
|
2
2
|
import { generator } from "@tanstack/router-generator";
|
|
3
3
|
import { getConfig } from "./config.js";
|
|
4
4
|
import { CONFIG_FILE_NAME } from "./constants.js";
|
|
@@ -11,6 +11,9 @@ const PLUGIN_NAME = "unplugin:router-generator";
|
|
|
11
11
|
const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
12
12
|
let ROOT = process.cwd();
|
|
13
13
|
let userConfig = options;
|
|
14
|
+
const getRoutesDirectoryPath = () => {
|
|
15
|
+
return isAbsolute(userConfig.routesDirectory) ? userConfig.routesDirectory : join(ROOT, userConfig.routesDirectory);
|
|
16
|
+
};
|
|
14
17
|
const generate = async () => {
|
|
15
18
|
if (checkLock()) {
|
|
16
19
|
return;
|
|
@@ -34,7 +37,7 @@ const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
|
34
37
|
if (event === "update" && filePath === resolve(userConfig.generatedRouteTree)) {
|
|
35
38
|
return;
|
|
36
39
|
}
|
|
37
|
-
const routesDirectoryPath =
|
|
40
|
+
const routesDirectoryPath = getRoutesDirectoryPath();
|
|
38
41
|
if (filePath.startsWith(routesDirectoryPath)) {
|
|
39
42
|
await generate();
|
|
40
43
|
}
|
|
@@ -64,6 +67,23 @@ const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
|
64
67
|
compiler.hooks.watchRun.tap(PLUGIN_NAME, async () => {
|
|
65
68
|
await run(generate);
|
|
66
69
|
});
|
|
70
|
+
},
|
|
71
|
+
async webpack(compiler) {
|
|
72
|
+
userConfig = await getConfig(options, ROOT);
|
|
73
|
+
await run(generate);
|
|
74
|
+
const routesDirectoryPath = getRoutesDirectoryPath();
|
|
75
|
+
const chokidar = await import("chokidar");
|
|
76
|
+
chokidar.watch(routesDirectoryPath).on("add", async () => {
|
|
77
|
+
await run(generate);
|
|
78
|
+
});
|
|
79
|
+
if (compiler.options.mode === "production") {
|
|
80
|
+
compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {
|
|
81
|
+
console.log("✅ " + PLUGIN_NAME + ": route-tree generation done");
|
|
82
|
+
setTimeout(() => {
|
|
83
|
+
process.exit(0);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
}
|
|
67
87
|
}
|
|
68
88
|
};
|
|
69
89
|
};
|
|
@@ -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 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 = await 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 =
|
|
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 = await 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 = await getConfig(options, ROOT)\n\n await run(generate)\n },\n },\n async rspack(compiler) {\n userConfig = await getConfig(options, ROOT)\n\n await run(generate)\n\n compiler.hooks.watchRun.tap(PLUGIN_NAME, async () => {\n await run(generate)\n })\n },\n async webpack(compiler) {\n userConfig = await getConfig(options, ROOT)\n\n await run(generate)\n\n // webpack watcher doesn't register newly created files\n const routesDirectoryPath = getRoutesDirectoryPath()\n const chokidar = await import('chokidar')\n chokidar.watch(routesDirectoryPath).on('add', async () => {\n await run(generate)\n })\n\n if (compiler.options.mode === 'production') {\n compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {\n console.log('✅ ' + 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,MAAM,UAAU,SAAS,IAAI;AAC1C;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,MAAM,UAAU,SAAS,IAAI;AAE1C,cAAM,IAAI,QAAQ;AAAA,MACpB;AAAA,IACF;AAAA,IACA,MAAM,OAAO,UAAU;AACR,mBAAA,MAAM,UAAU,SAAS,IAAI;AAE1C,YAAM,IAAI,QAAQ;AAElB,eAAS,MAAM,SAAS,IAAI,aAAa,YAAY;AACnD,cAAM,IAAI,QAAQ;AAAA,MAAA,CACnB;AAAA,IACH;AAAA,IACA,MAAM,QAAQ,UAAU;AACT,mBAAA,MAAM,UAAU,SAAS,IAAI;AAE1C,YAAM,IAAI,QAAQ;AAGlB,YAAM,sBAAsB;AACtB,YAAA,WAAW,MAAM,OAAO,UAAU;AACxC,eAAS,MAAM,mBAAmB,EAAE,GAAG,OAAO,YAAY;AACxD,cAAM,IAAI,QAAQ;AAAA,MAAA,CACnB;AAEG,UAAA,SAAS,QAAQ,SAAS,cAAc;AAC1C,iBAAS,MAAM,KAAK,IAAI,aAAa,CAAC,UAAU;AACtC,kBAAA,IAAI,OAAO,cAAc,8BAA8B;AAC/D,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
|
@@ -32,28 +32,19 @@ declare const TanStackRouterGeneratorRspack: (options?: Partial<{
|
|
|
32
32
|
routeFileIgnorePattern?: string | undefined;
|
|
33
33
|
}> | undefined) => _rspack_core_dist_config_zod.RspackPluginInstance;
|
|
34
34
|
/**
|
|
35
|
-
* @experimental Do not use this plugin yet
|
|
36
|
-
*
|
|
37
|
-
* Unplugin's Rspack integration doesn't support the `resolveId` and `transform` hooks.
|
|
38
|
-
* The code-splitter won't work with Rspack and will probably break your dev and build.
|
|
39
|
-
*
|
|
40
|
-
* If you're familiar with Rspack and know how to overcome our `resolveId` and `transform`
|
|
41
|
-
* limitations, please let us know.
|
|
42
|
-
* We'd love to support it, but we're not sure how to do it yet 😅.
|
|
43
|
-
*
|
|
44
35
|
* @example
|
|
45
36
|
* ```ts
|
|
46
37
|
* export default defineConfig({
|
|
47
38
|
* // ...
|
|
48
39
|
* tools: {
|
|
49
40
|
* rspack: {
|
|
50
|
-
* plugins: [
|
|
41
|
+
* plugins: [TanStackRouterCodeSplitterRspack()],
|
|
51
42
|
* },
|
|
52
43
|
* },
|
|
53
44
|
* })
|
|
54
45
|
* ```
|
|
55
46
|
*/
|
|
56
|
-
declare const
|
|
47
|
+
declare const TanStackRouterCodeSplitterRspack: (options?: Partial<{
|
|
57
48
|
routeFileIgnorePrefix: string;
|
|
58
49
|
routesDirectory: string;
|
|
59
50
|
generatedRouteTree: string;
|
|
@@ -103,5 +94,5 @@ declare const TanStackRouterRspack: (options?: Partial<{
|
|
|
103
94
|
routeFileIgnorePattern?: string | undefined;
|
|
104
95
|
}> | undefined) => _rspack_core_dist_config_zod.RspackPluginInstance;
|
|
105
96
|
export default TanStackRouterRspack;
|
|
106
|
-
export { configSchema, TanStackRouterRspack, TanStackRouterGeneratorRspack,
|
|
97
|
+
export { configSchema, TanStackRouterRspack, TanStackRouterGeneratorRspack, TanStackRouterCodeSplitterRspack, };
|
|
107
98
|
export type { Config };
|
package/dist/esm/rspack.js
CHANGED
|
@@ -6,15 +6,17 @@ import { unpluginRouterComposedFactory } from "./composed.js";
|
|
|
6
6
|
const TanStackRouterGeneratorRspack = /* @__PURE__ */ createRspackPlugin(
|
|
7
7
|
unpluginRouterGeneratorFactory
|
|
8
8
|
);
|
|
9
|
-
const
|
|
9
|
+
const TanStackRouterCodeSplitterRspack = /* @__PURE__ */ createRspackPlugin(
|
|
10
|
+
unpluginRouterCodeSplitterFactory
|
|
11
|
+
);
|
|
10
12
|
const TanStackRouterRspack = /* @__PURE__ */ createRspackPlugin(
|
|
11
13
|
unpluginRouterComposedFactory
|
|
12
14
|
);
|
|
13
15
|
export {
|
|
16
|
+
TanStackRouterCodeSplitterRspack,
|
|
14
17
|
TanStackRouterGeneratorRspack,
|
|
15
18
|
TanStackRouterRspack,
|
|
16
19
|
configSchema,
|
|
17
|
-
TanStackRouterRspack as default
|
|
18
|
-
unstable_TanStackRouterCodeSplitterRspack
|
|
20
|
+
TanStackRouterRspack as default
|
|
19
21
|
};
|
|
20
22
|
//# sourceMappingURL=rspack.js.map
|
package/dist/esm/rspack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rspack.js","sources":["../../src/rspack.ts"],"sourcesContent":["import { createRspackPlugin } from 'unplugin'\nimport { unpluginRouterCodeSplitterFactory } from './code-splitter'\nimport { configSchema } from './config'\nimport { unpluginRouterGeneratorFactory } from './router-generator'\nimport { unpluginRouterComposedFactory } from './composed'\nimport type { Config } from './config'\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterGeneratorRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterGeneratorRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterGeneratorFactory,\n)\n\n/**\n * @
|
|
1
|
+
{"version":3,"file":"rspack.js","sources":["../../src/rspack.ts"],"sourcesContent":["import { createRspackPlugin } from 'unplugin'\nimport { unpluginRouterCodeSplitterFactory } from './code-splitter'\nimport { configSchema } from './config'\nimport { unpluginRouterGeneratorFactory } from './router-generator'\nimport { unpluginRouterComposedFactory } from './composed'\nimport type { Config } from './config'\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterGeneratorRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterGeneratorRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterGeneratorFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterCodeSplitterRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterCodeSplitterRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterCodeSplitterFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [TanStackRouterRspack()],\n * },\n * },\n * })\n * ```\n */\nconst TanStackRouterRspack = /* #__PURE__ */ createRspackPlugin(\n unpluginRouterComposedFactory,\n)\n\nexport default TanStackRouterRspack\nexport {\n configSchema,\n TanStackRouterRspack,\n TanStackRouterGeneratorRspack,\n TanStackRouterCodeSplitterRspack,\n}\nexport type { Config }\n"],"names":[],"mappings":";;;;;AAoBA,MAAM,gCAAgD;AAAA,EACpD;AACF;AAeA,MAAM,mCAAmD;AAAA,EACvD;AACF;AAeA,MAAM,uBAAuC;AAAA,EAC3C;AACF;"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { configSchema, Config } from './config.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* export default {
|
|
7
|
+
* // ...
|
|
8
|
+
* plugins: [TanStackRouterGeneratorWebpack()],
|
|
9
|
+
* }
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
declare const TanStackRouterGeneratorWebpack: (options?: Partial<{
|
|
13
|
+
routeFileIgnorePrefix: string;
|
|
14
|
+
routesDirectory: string;
|
|
15
|
+
generatedRouteTree: string;
|
|
16
|
+
quoteStyle: "single" | "double";
|
|
17
|
+
semicolons: boolean;
|
|
18
|
+
disableTypes: boolean;
|
|
19
|
+
addExtensions: boolean;
|
|
20
|
+
disableLogging: boolean;
|
|
21
|
+
routeTreeFileHeader: string[];
|
|
22
|
+
routeTreeFileFooter: string[];
|
|
23
|
+
enableRouteGeneration?: boolean | undefined;
|
|
24
|
+
experimental?: {
|
|
25
|
+
enableCodeSplitting?: boolean | undefined;
|
|
26
|
+
} | undefined;
|
|
27
|
+
routeFilePrefix?: string | undefined;
|
|
28
|
+
routeFileIgnorePattern?: string | undefined;
|
|
29
|
+
}> | undefined) => import('unplugin').WebpackPluginInstance;
|
|
30
|
+
/**
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* export default {
|
|
34
|
+
* // ...
|
|
35
|
+
* plugins: [TanStackRouterCodeSplitterWebpack()],
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
declare const TanStackRouterCodeSplitterWebpack: (options?: Partial<{
|
|
40
|
+
routeFileIgnorePrefix: string;
|
|
41
|
+
routesDirectory: string;
|
|
42
|
+
generatedRouteTree: string;
|
|
43
|
+
quoteStyle: "single" | "double";
|
|
44
|
+
semicolons: boolean;
|
|
45
|
+
disableTypes: boolean;
|
|
46
|
+
addExtensions: boolean;
|
|
47
|
+
disableLogging: boolean;
|
|
48
|
+
routeTreeFileHeader: string[];
|
|
49
|
+
routeTreeFileFooter: string[];
|
|
50
|
+
enableRouteGeneration?: boolean | undefined;
|
|
51
|
+
experimental?: {
|
|
52
|
+
enableCodeSplitting?: boolean | undefined;
|
|
53
|
+
} | undefined;
|
|
54
|
+
routeFilePrefix?: string | undefined;
|
|
55
|
+
routeFileIgnorePattern?: string | undefined;
|
|
56
|
+
}> | undefined) => import('unplugin').WebpackPluginInstance;
|
|
57
|
+
/**
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* export default {
|
|
61
|
+
* // ...
|
|
62
|
+
* plugins: [TanStackRouterWebpack()],
|
|
63
|
+
* }
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
declare const TanStackRouterWebpack: (options?: Partial<{
|
|
67
|
+
routeFileIgnorePrefix: string;
|
|
68
|
+
routesDirectory: string;
|
|
69
|
+
generatedRouteTree: string;
|
|
70
|
+
quoteStyle: "single" | "double";
|
|
71
|
+
semicolons: boolean;
|
|
72
|
+
disableTypes: boolean;
|
|
73
|
+
addExtensions: boolean;
|
|
74
|
+
disableLogging: boolean;
|
|
75
|
+
routeTreeFileHeader: string[];
|
|
76
|
+
routeTreeFileFooter: string[];
|
|
77
|
+
enableRouteGeneration?: boolean | undefined;
|
|
78
|
+
experimental?: {
|
|
79
|
+
enableCodeSplitting?: boolean | undefined;
|
|
80
|
+
} | undefined;
|
|
81
|
+
routeFilePrefix?: string | undefined;
|
|
82
|
+
routeFileIgnorePattern?: string | undefined;
|
|
83
|
+
}> | undefined) => import('unplugin').WebpackPluginInstance;
|
|
84
|
+
export default TanStackRouterWebpack;
|
|
85
|
+
export { configSchema, TanStackRouterWebpack, TanStackRouterGeneratorWebpack, TanStackRouterCodeSplitterWebpack, };
|
|
86
|
+
export type { Config };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createWebpackPlugin } from "unplugin";
|
|
2
|
+
import { unpluginRouterCodeSplitterFactory } from "./code-splitter.js";
|
|
3
|
+
import { configSchema } from "./config.js";
|
|
4
|
+
import { unpluginRouterGeneratorFactory } from "./router-generator.js";
|
|
5
|
+
import { unpluginRouterComposedFactory } from "./composed.js";
|
|
6
|
+
const TanStackRouterGeneratorWebpack = /* @__PURE__ */ createWebpackPlugin(
|
|
7
|
+
unpluginRouterGeneratorFactory
|
|
8
|
+
);
|
|
9
|
+
const TanStackRouterCodeSplitterWebpack = /* @__PURE__ */ createWebpackPlugin(
|
|
10
|
+
unpluginRouterCodeSplitterFactory
|
|
11
|
+
);
|
|
12
|
+
const TanStackRouterWebpack = /* @__PURE__ */ createWebpackPlugin(
|
|
13
|
+
unpluginRouterComposedFactory
|
|
14
|
+
);
|
|
15
|
+
export {
|
|
16
|
+
TanStackRouterCodeSplitterWebpack,
|
|
17
|
+
TanStackRouterGeneratorWebpack,
|
|
18
|
+
TanStackRouterWebpack,
|
|
19
|
+
configSchema,
|
|
20
|
+
TanStackRouterWebpack as default
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=webpack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webpack.js","sources":["../../src/webpack.ts"],"sourcesContent":["import { createWebpackPlugin } from 'unplugin'\nimport { unpluginRouterCodeSplitterFactory } from './code-splitter'\nimport { configSchema } from './config'\nimport { unpluginRouterGeneratorFactory } from './router-generator'\nimport { unpluginRouterComposedFactory } from './composed'\nimport type { Config } from './config'\n\n/**\n * @example\n * ```ts\n * export default {\n * // ...\n * plugins: [TanStackRouterGeneratorWebpack()],\n * }\n * ```\n */\nconst TanStackRouterGeneratorWebpack = /* #__PURE__ */ createWebpackPlugin(\n unpluginRouterGeneratorFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default {\n * // ...\n * plugins: [TanStackRouterCodeSplitterWebpack()],\n * }\n * ```\n */\nconst TanStackRouterCodeSplitterWebpack = /* #__PURE__ */ createWebpackPlugin(\n unpluginRouterCodeSplitterFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default {\n * // ...\n * plugins: [TanStackRouterWebpack()],\n * }\n * ```\n */\nconst TanStackRouterWebpack = /* #__PURE__ */ createWebpackPlugin(\n unpluginRouterComposedFactory,\n)\n\nexport default TanStackRouterWebpack\nexport {\n configSchema,\n TanStackRouterWebpack,\n TanStackRouterGeneratorWebpack,\n TanStackRouterCodeSplitterWebpack,\n}\nexport type { Config }\n"],"names":[],"mappings":";;;;;AAgBA,MAAM,iCAAiD;AAAA,EACrD;AACF;AAWA,MAAM,oCAAoD;AAAA,EACxD;AACF;AAWA,MAAM,wBAAwC;AAAA,EAC5C;AACF;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/router-plugin",
|
|
3
|
-
"version": "1.43.
|
|
3
|
+
"version": "1.43.8",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -46,6 +46,16 @@
|
|
|
46
46
|
"default": "./dist/cjs/rspack.cjs"
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
|
+
"./webpack": {
|
|
50
|
+
"import": {
|
|
51
|
+
"types": "./dist/esm/webpack.d.ts",
|
|
52
|
+
"default": "./dist/esm/webpack.js"
|
|
53
|
+
},
|
|
54
|
+
"require": {
|
|
55
|
+
"types": "./dist/cjs/webpack.d.cts",
|
|
56
|
+
"default": "./dist/cjs/webpack.cjs"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
49
59
|
"./package.json": "./package.json"
|
|
50
60
|
},
|
|
51
61
|
"sideEffects": false,
|
|
@@ -67,7 +77,8 @@
|
|
|
67
77
|
],
|
|
68
78
|
"peerDependencies": {
|
|
69
79
|
"@rsbuild/core": ">=0.7.9",
|
|
70
|
-
"vite": ">=5.0.13"
|
|
80
|
+
"vite": ">=5.0.13",
|
|
81
|
+
"webpack": ">=5.92.0"
|
|
71
82
|
},
|
|
72
83
|
"peerDependenciesMeta": {
|
|
73
84
|
"vite": {
|
|
@@ -75,6 +86,9 @@
|
|
|
75
86
|
},
|
|
76
87
|
"@rsbuild/core": {
|
|
77
88
|
"optional": true
|
|
89
|
+
},
|
|
90
|
+
"webpack": {
|
|
91
|
+
"optional": true
|
|
78
92
|
}
|
|
79
93
|
},
|
|
80
94
|
"dependencies": {
|
|
@@ -91,6 +105,7 @@
|
|
|
91
105
|
"@types/babel__template": "^7.4.4",
|
|
92
106
|
"@types/babel__traverse": "^7.20.6",
|
|
93
107
|
"babel-dead-code-elimination": "^1.0.6",
|
|
108
|
+
"chokidar": "^3.5.3",
|
|
94
109
|
"unplugin": "^1.10.2",
|
|
95
110
|
"zod": "^3.22.4",
|
|
96
111
|
"@tanstack/router-generator": "^1.43.1"
|
package/src/code-splitter.ts
CHANGED
|
@@ -52,6 +52,7 @@ plugins: [
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
const PLUGIN_NAME = 'unplugin:router-code-splitter'
|
|
55
|
+
const JoinedSplitPrefix = splitPrefix + ':'
|
|
55
56
|
|
|
56
57
|
export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
|
|
57
58
|
Partial<Config> | undefined
|
|
@@ -77,11 +78,6 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
|
|
|
77
78
|
if (debug) console.info('')
|
|
78
79
|
if (debug) console.info('')
|
|
79
80
|
if (debug) console.info('')
|
|
80
|
-
if (debug) console.info('')
|
|
81
|
-
if (debug) console.info('')
|
|
82
|
-
if (debug) console.info('')
|
|
83
|
-
if (debug) console.info('')
|
|
84
|
-
if (debug) console.info('')
|
|
85
81
|
|
|
86
82
|
return compiledVirtualRoute
|
|
87
83
|
}
|
|
@@ -102,13 +98,6 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
|
|
|
102
98
|
if (debug) console.info('')
|
|
103
99
|
if (debug) console.info('')
|
|
104
100
|
if (debug) console.info('')
|
|
105
|
-
if (debug) console.info('')
|
|
106
|
-
if (debug) console.info('')
|
|
107
|
-
if (debug) console.info('')
|
|
108
|
-
if (debug) console.info('')
|
|
109
|
-
if (debug) console.info('')
|
|
110
|
-
if (debug) console.info('')
|
|
111
|
-
if (debug) console.info('')
|
|
112
101
|
|
|
113
102
|
return compiledReferenceRoute
|
|
114
103
|
}
|
|
@@ -159,6 +148,26 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
|
|
|
159
148
|
return null
|
|
160
149
|
},
|
|
161
150
|
|
|
151
|
+
transformInclude(transformId) {
|
|
152
|
+
if (!userConfig.experimental?.enableCodeSplitting) {
|
|
153
|
+
return undefined
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
let id = transformId
|
|
157
|
+
|
|
158
|
+
if (id.startsWith(JoinedSplitPrefix)) {
|
|
159
|
+
id = id.replace(JoinedSplitPrefix, '')
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if (
|
|
163
|
+
fileIsInRoutesDirectory(id, userConfig.routesDirectory) ||
|
|
164
|
+
id.includes(splitPrefix)
|
|
165
|
+
) {
|
|
166
|
+
return true
|
|
167
|
+
}
|
|
168
|
+
return false
|
|
169
|
+
},
|
|
170
|
+
|
|
162
171
|
vite: {
|
|
163
172
|
async configResolved(config) {
|
|
164
173
|
ROOT = config.root
|
|
@@ -167,7 +176,55 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
|
|
|
167
176
|
},
|
|
168
177
|
|
|
169
178
|
async rspack(compiler) {
|
|
179
|
+
ROOT = process.cwd()
|
|
180
|
+
|
|
181
|
+
compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {
|
|
182
|
+
self.normalModuleFactory.hooks.beforeResolve.tap(
|
|
183
|
+
PLUGIN_NAME,
|
|
184
|
+
(resolveData) => {
|
|
185
|
+
if (resolveData.request.includes(JoinedSplitPrefix)) {
|
|
186
|
+
resolveData.request = resolveData.request.replace(
|
|
187
|
+
JoinedSplitPrefix,
|
|
188
|
+
'',
|
|
189
|
+
)
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
)
|
|
193
|
+
})
|
|
194
|
+
|
|
170
195
|
userConfig = await getConfig(options, ROOT)
|
|
171
196
|
},
|
|
197
|
+
|
|
198
|
+
async webpack(compiler) {
|
|
199
|
+
ROOT = process.cwd()
|
|
200
|
+
|
|
201
|
+
compiler.hooks.beforeCompile.tap(PLUGIN_NAME, (self) => {
|
|
202
|
+
self.normalModuleFactory.hooks.beforeResolve.tap(
|
|
203
|
+
PLUGIN_NAME,
|
|
204
|
+
(resolveData) => {
|
|
205
|
+
if (resolveData.request.includes(JoinedSplitPrefix)) {
|
|
206
|
+
resolveData.request = resolveData.request.replace(
|
|
207
|
+
JoinedSplitPrefix,
|
|
208
|
+
'',
|
|
209
|
+
)
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
)
|
|
213
|
+
})
|
|
214
|
+
|
|
215
|
+
userConfig = await getConfig(options, ROOT)
|
|
216
|
+
|
|
217
|
+
if (
|
|
218
|
+
userConfig.experimental?.enableCodeSplitting &&
|
|
219
|
+
compiler.options.mode === 'production'
|
|
220
|
+
) {
|
|
221
|
+
compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {
|
|
222
|
+
console.log('✅ ' + PLUGIN_NAME + ': code-splitting done!')
|
|
223
|
+
setTimeout(() => {
|
|
224
|
+
process.exit(0)
|
|
225
|
+
})
|
|
226
|
+
})
|
|
227
|
+
}
|
|
228
|
+
},
|
|
172
229
|
}
|
|
173
230
|
}
|
package/src/composed.ts
CHANGED
|
@@ -14,17 +14,9 @@ export const unpluginRouterComposedFactory: UnpluginFactory<
|
|
|
14
14
|
: [routerGenerator]
|
|
15
15
|
|
|
16
16
|
const routerCodeSplitter = unpluginRouterCodeSplitterFactory(options, meta)
|
|
17
|
-
|
|
17
|
+
const routerCodeSplitterOptions = Array.isArray(routerCodeSplitter)
|
|
18
18
|
? routerCodeSplitter
|
|
19
19
|
: [routerCodeSplitter]
|
|
20
20
|
|
|
21
|
-
// Rspack doesn't support the `resolveId` and `transform` hooks provided by unplugin
|
|
22
|
-
// so we need to disable the code splitter for it
|
|
23
|
-
// If you're using Rspack, and know how to implement the code splitting, please let us know
|
|
24
|
-
// We'd love to support it, but we're not sure how to do it yet
|
|
25
|
-
if (meta.framework === 'rspack') {
|
|
26
|
-
routerCodeSplitterOptions = []
|
|
27
|
-
}
|
|
28
|
-
|
|
29
21
|
return [...routerGeneratorOptions, ...routerCodeSplitterOptions]
|
|
30
22
|
}
|
package/src/router-generator.ts
CHANGED
|
@@ -20,6 +20,12 @@ export const unpluginRouterGeneratorFactory: UnpluginFactory<
|
|
|
20
20
|
let ROOT: string = process.cwd()
|
|
21
21
|
let userConfig = options as Config
|
|
22
22
|
|
|
23
|
+
const getRoutesDirectoryPath = () => {
|
|
24
|
+
return isAbsolute(userConfig.routesDirectory)
|
|
25
|
+
? userConfig.routesDirectory
|
|
26
|
+
: join(ROOT, userConfig.routesDirectory)
|
|
27
|
+
}
|
|
28
|
+
|
|
23
29
|
const generate = async () => {
|
|
24
30
|
if (checkLock()) {
|
|
25
31
|
return
|
|
@@ -56,10 +62,7 @@ export const unpluginRouterGeneratorFactory: UnpluginFactory<
|
|
|
56
62
|
return
|
|
57
63
|
}
|
|
58
64
|
|
|
59
|
-
const routesDirectoryPath =
|
|
60
|
-
? userConfig.routesDirectory
|
|
61
|
-
: join(ROOT, userConfig.routesDirectory)
|
|
62
|
-
|
|
65
|
+
const routesDirectoryPath = getRoutesDirectoryPath()
|
|
63
66
|
if (filePath.startsWith(routesDirectoryPath)) {
|
|
64
67
|
await generate()
|
|
65
68
|
}
|
|
@@ -95,5 +98,26 @@ export const unpluginRouterGeneratorFactory: UnpluginFactory<
|
|
|
95
98
|
await run(generate)
|
|
96
99
|
})
|
|
97
100
|
},
|
|
101
|
+
async webpack(compiler) {
|
|
102
|
+
userConfig = await getConfig(options, ROOT)
|
|
103
|
+
|
|
104
|
+
await run(generate)
|
|
105
|
+
|
|
106
|
+
// webpack watcher doesn't register newly created files
|
|
107
|
+
const routesDirectoryPath = getRoutesDirectoryPath()
|
|
108
|
+
const chokidar = await import('chokidar')
|
|
109
|
+
chokidar.watch(routesDirectoryPath).on('add', async () => {
|
|
110
|
+
await run(generate)
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
if (compiler.options.mode === 'production') {
|
|
114
|
+
compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {
|
|
115
|
+
console.log('✅ ' + PLUGIN_NAME + ': route-tree generation done')
|
|
116
|
+
setTimeout(() => {
|
|
117
|
+
process.exit(0)
|
|
118
|
+
})
|
|
119
|
+
})
|
|
120
|
+
}
|
|
121
|
+
},
|
|
98
122
|
}
|
|
99
123
|
}
|
package/src/rspack.ts
CHANGED
|
@@ -23,29 +23,21 @@ const TanStackRouterGeneratorRspack = /* #__PURE__ */ createRspackPlugin(
|
|
|
23
23
|
)
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
|
-
* @experimental Do not use this plugin yet
|
|
27
|
-
*
|
|
28
|
-
* Unplugin's Rspack integration doesn't support the `resolveId` and `transform` hooks.
|
|
29
|
-
* The code-splitter won't work with Rspack and will probably break your dev and build.
|
|
30
|
-
*
|
|
31
|
-
* If you're familiar with Rspack and know how to overcome our `resolveId` and `transform`
|
|
32
|
-
* limitations, please let us know.
|
|
33
|
-
* We'd love to support it, but we're not sure how to do it yet 😅.
|
|
34
|
-
*
|
|
35
26
|
* @example
|
|
36
27
|
* ```ts
|
|
37
28
|
* export default defineConfig({
|
|
38
29
|
* // ...
|
|
39
30
|
* tools: {
|
|
40
31
|
* rspack: {
|
|
41
|
-
* plugins: [
|
|
32
|
+
* plugins: [TanStackRouterCodeSplitterRspack()],
|
|
42
33
|
* },
|
|
43
34
|
* },
|
|
44
35
|
* })
|
|
45
36
|
* ```
|
|
46
37
|
*/
|
|
47
|
-
const
|
|
48
|
-
|
|
38
|
+
const TanStackRouterCodeSplitterRspack = /* #__PURE__ */ createRspackPlugin(
|
|
39
|
+
unpluginRouterCodeSplitterFactory,
|
|
40
|
+
)
|
|
49
41
|
|
|
50
42
|
/**
|
|
51
43
|
* @example
|
|
@@ -69,6 +61,6 @@ export {
|
|
|
69
61
|
configSchema,
|
|
70
62
|
TanStackRouterRspack,
|
|
71
63
|
TanStackRouterGeneratorRspack,
|
|
72
|
-
|
|
64
|
+
TanStackRouterCodeSplitterRspack,
|
|
73
65
|
}
|
|
74
66
|
export type { Config }
|
package/src/webpack.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { createWebpackPlugin } from 'unplugin'
|
|
2
|
+
import { unpluginRouterCodeSplitterFactory } from './code-splitter'
|
|
3
|
+
import { configSchema } from './config'
|
|
4
|
+
import { unpluginRouterGeneratorFactory } from './router-generator'
|
|
5
|
+
import { unpluginRouterComposedFactory } from './composed'
|
|
6
|
+
import type { Config } from './config'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* export default {
|
|
12
|
+
* // ...
|
|
13
|
+
* plugins: [TanStackRouterGeneratorWebpack()],
|
|
14
|
+
* }
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
const TanStackRouterGeneratorWebpack = /* #__PURE__ */ createWebpackPlugin(
|
|
18
|
+
unpluginRouterGeneratorFactory,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* export default {
|
|
25
|
+
* // ...
|
|
26
|
+
* plugins: [TanStackRouterCodeSplitterWebpack()],
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
const TanStackRouterCodeSplitterWebpack = /* #__PURE__ */ createWebpackPlugin(
|
|
31
|
+
unpluginRouterCodeSplitterFactory,
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* export default {
|
|
38
|
+
* // ...
|
|
39
|
+
* plugins: [TanStackRouterWebpack()],
|
|
40
|
+
* }
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
const TanStackRouterWebpack = /* #__PURE__ */ createWebpackPlugin(
|
|
44
|
+
unpluginRouterComposedFactory,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
export default TanStackRouterWebpack
|
|
48
|
+
export {
|
|
49
|
+
configSchema,
|
|
50
|
+
TanStackRouterWebpack,
|
|
51
|
+
TanStackRouterGeneratorWebpack,
|
|
52
|
+
TanStackRouterCodeSplitterWebpack,
|
|
53
|
+
}
|
|
54
|
+
export type { Config }
|