@tanstack/router-plugin 1.100.0 → 1.101.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/core/code-splitter/compilers.cjs +187 -34
- package/dist/cjs/core/code-splitter/compilers.cjs.map +1 -1
- package/dist/cjs/core/code-splitter/compilers.d.cts +14 -2
- package/dist/cjs/core/code-splitter/path-ids.cjs +37 -0
- package/dist/cjs/core/code-splitter/path-ids.cjs.map +1 -0
- package/dist/cjs/core/code-splitter/path-ids.d.cts +2 -0
- package/dist/cjs/core/config.cjs +33 -1
- package/dist/cjs/core/config.cjs.map +1 -1
- package/dist/cjs/core/config.d.cts +24 -0
- package/dist/cjs/core/constants.cjs +17 -2
- package/dist/cjs/core/constants.cjs.map +1 -1
- package/dist/cjs/core/constants.d.cts +5 -1
- package/dist/cjs/core/router-code-splitter-plugin.cjs +69 -16
- package/dist/cjs/core/router-code-splitter-plugin.cjs.map +1 -1
- package/dist/cjs/esbuild.d.cts +3 -0
- package/dist/cjs/rspack.d.cts +3 -0
- package/dist/cjs/vite.d.cts +3 -0
- package/dist/cjs/webpack.d.cts +3 -0
- package/dist/esm/core/code-splitter/compilers.d.ts +14 -2
- package/dist/esm/core/code-splitter/compilers.js +189 -36
- package/dist/esm/core/code-splitter/compilers.js.map +1 -1
- package/dist/esm/core/code-splitter/path-ids.d.ts +2 -0
- package/dist/esm/core/code-splitter/path-ids.js +37 -0
- package/dist/esm/core/code-splitter/path-ids.js.map +1 -0
- package/dist/esm/core/config.d.ts +24 -0
- package/dist/esm/core/config.js +34 -2
- package/dist/esm/core/config.js.map +1 -1
- package/dist/esm/core/constants.d.ts +5 -1
- package/dist/esm/core/constants.js +17 -2
- package/dist/esm/core/constants.js.map +1 -1
- package/dist/esm/core/router-code-splitter-plugin.js +72 -19
- package/dist/esm/core/router-code-splitter-plugin.js.map +1 -1
- package/dist/esm/esbuild.d.ts +3 -0
- package/dist/esm/rspack.d.ts +3 -0
- package/dist/esm/vite.d.ts +3 -0
- package/dist/esm/webpack.d.ts +3 -0
- package/package.json +5 -5
- package/src/core/code-splitter/compilers.ts +230 -46
- package/src/core/code-splitter/path-ids.ts +39 -0
- package/src/core/config.ts +63 -0
- package/src/core/constants.ts +18 -1
- package/src/core/router-code-splitter-plugin.ts +104 -20
package/dist/cjs/core/config.cjs
CHANGED
|
@@ -2,8 +2,39 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const zod = require("zod");
|
|
4
4
|
const routerGenerator = require("@tanstack/router-generator");
|
|
5
|
+
const splitGroupingsSchema = zod.z.array(
|
|
6
|
+
zod.z.array(
|
|
7
|
+
zod.z.union([
|
|
8
|
+
zod.z.literal("loader"),
|
|
9
|
+
zod.z.literal("component"),
|
|
10
|
+
zod.z.literal("pendingComponent"),
|
|
11
|
+
zod.z.literal("errorComponent"),
|
|
12
|
+
zod.z.literal("notFoundComponent")
|
|
13
|
+
])
|
|
14
|
+
),
|
|
15
|
+
{
|
|
16
|
+
message: " Must be an Array of Arrays containing the split groupings. i.e. [['component'], ['pendingComponent'], ['errorComponent', 'notFoundComponent']]"
|
|
17
|
+
}
|
|
18
|
+
).superRefine((val, ctx) => {
|
|
19
|
+
const flattened = val.flat();
|
|
20
|
+
const unique = [...new Set(flattened)];
|
|
21
|
+
if (unique.length !== flattened.length) {
|
|
22
|
+
ctx.addIssue({
|
|
23
|
+
code: "custom",
|
|
24
|
+
message: ` Split groupings must be unique and not repeated. i.e. i.e. [['component'], ['pendingComponent'], ['errorComponent', 'notFoundComponent']].
|
|
25
|
+
You input was: ${JSON.stringify(val)}.`
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
const codeSplittingOptionsSchema = zod.z.object({
|
|
30
|
+
splitBehavior: zod.z.function().optional(),
|
|
31
|
+
defaultBehavior: splitGroupingsSchema.optional()
|
|
32
|
+
});
|
|
5
33
|
const configSchema = routerGenerator.configSchema.extend({
|
|
6
|
-
enableRouteGeneration: zod.z.boolean().optional()
|
|
34
|
+
enableRouteGeneration: zod.z.boolean().optional(),
|
|
35
|
+
codeSplittingOptions: zod.z.custom((v) => {
|
|
36
|
+
return codeSplittingOptionsSchema.parse(v);
|
|
37
|
+
}).optional()
|
|
7
38
|
});
|
|
8
39
|
const getConfig = (inlineConfig, root) => {
|
|
9
40
|
const config = routerGenerator.getConfig(inlineConfig, root);
|
|
@@ -11,4 +42,5 @@ const getConfig = (inlineConfig, root) => {
|
|
|
11
42
|
};
|
|
12
43
|
exports.configSchema = configSchema;
|
|
13
44
|
exports.getConfig = getConfig;
|
|
45
|
+
exports.splitGroupingsSchema = splitGroupingsSchema;
|
|
14
46
|
//# sourceMappingURL=config.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.cjs","sources":["../../../src/core/config.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n configSchema as generatorConfigSchema,\n getConfig as getGeneratorConfig,\n} from '@tanstack/router-generator'\n\nexport const configSchema = generatorConfigSchema.extend({\n enableRouteGeneration: z.boolean().optional(),\n})\n\nexport const getConfig = (inlineConfig: Partial<Config>, root: string) => {\n const config = getGeneratorConfig(inlineConfig, root)\n\n return configSchema.parse({ ...config, ...inlineConfig })\n}\n\nexport type Config = z.infer<typeof configSchema>\n"],"names":["
|
|
1
|
+
{"version":3,"file":"config.cjs","sources":["../../../src/core/config.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n configSchema as generatorConfigSchema,\n getConfig as getGeneratorConfig,\n} from '@tanstack/router-generator'\nimport type { RegisteredRouter, RouteIds } from '@tanstack/react-router'\nimport type { CodeSplitGroupings } from './constants'\n\nexport const splitGroupingsSchema = z\n .array(\n z.array(\n z.union([\n z.literal('loader'),\n z.literal('component'),\n z.literal('pendingComponent'),\n z.literal('errorComponent'),\n z.literal('notFoundComponent'),\n ]),\n ),\n {\n message:\n \" Must be an Array of Arrays containing the split groupings. i.e. [['component'], ['pendingComponent'], ['errorComponent', 'notFoundComponent']]\",\n },\n )\n .superRefine((val, ctx) => {\n const flattened = val.flat()\n const unique = [...new Set(flattened)]\n\n // Elements must be unique,\n // ie. this shouldn't be allows [['component'], ['component', 'loader']]\n if (unique.length !== flattened.length) {\n ctx.addIssue({\n code: 'custom',\n message:\n \" Split groupings must be unique and not repeated. i.e. i.e. [['component'], ['pendingComponent'], ['errorComponent', 'notFoundComponent']].\" +\n `\\n You input was: ${JSON.stringify(val)}.`,\n })\n }\n })\n\nexport type CodeSplittingOptions = {\n /**\n * Use this function to programmatically control the code splitting behavior\n * based on the `routeId` for each route.\n *\n * If you just need to change the default behavior, you can use the `defaultBehavior` option.\n * @param params\n */\n splitBehavior?: (params: {\n routeId: RouteIds<RegisteredRouter['routeTree']>\n }) => CodeSplitGroupings | undefined | void\n\n /**\n * The default/global configuration to control your code splitting behavior per route.\n * @default [['component'],['pendingComponent'],['errorComponent'],['notFoundComponent']]\n */\n defaultBehavior?: CodeSplitGroupings\n}\n\nconst codeSplittingOptionsSchema = z.object({\n splitBehavior: z.function().optional(),\n defaultBehavior: splitGroupingsSchema.optional(),\n})\n\nexport const configSchema = generatorConfigSchema.extend({\n enableRouteGeneration: z.boolean().optional(),\n codeSplittingOptions: z\n .custom<CodeSplittingOptions>((v) => {\n return codeSplittingOptionsSchema.parse(v)\n })\n .optional(),\n})\n\nexport const getConfig = (inlineConfig: Partial<Config>, root: string) => {\n const config = getGeneratorConfig(inlineConfig, root)\n\n return configSchema.parse({ ...config, ...inlineConfig })\n}\n\nexport type Config = z.infer<typeof configSchema>\n"],"names":["z","generatorConfigSchema","getGeneratorConfig"],"mappings":";;;;AAQO,MAAM,uBAAuBA,IACjC,EAAA;AAAA,EACCA,IAAAA,EAAE;AAAA,IACAA,IAAAA,EAAE,MAAM;AAAA,MACNA,IAAA,EAAE,QAAQ,QAAQ;AAAA,MAClBA,IAAA,EAAE,QAAQ,WAAW;AAAA,MACrBA,IAAA,EAAE,QAAQ,kBAAkB;AAAA,MAC5BA,IAAA,EAAE,QAAQ,gBAAgB;AAAA,MAC1BA,IAAA,EAAE,QAAQ,mBAAmB;AAAA,IAC9B,CAAA;AAAA,EACH;AAAA,EACA;AAAA,IACE,SACE;AAAA,EAAA;AAEN,EACC,YAAY,CAAC,KAAK,QAAQ;AACnB,QAAA,YAAY,IAAI,KAAK;AAC3B,QAAM,SAAS,CAAC,GAAG,IAAI,IAAI,SAAS,CAAC;AAIjC,MAAA,OAAO,WAAW,UAAU,QAAQ;AACtC,QAAI,SAAS;AAAA,MACX,MAAM;AAAA,MACN,SACE;AAAA,mBACsB,KAAK,UAAU,GAAG,CAAC;AAAA,IAAA,CAC5C;AAAA,EAAA;AAEL,CAAC;AAqBH,MAAM,6BAA6BA,MAAE,OAAO;AAAA,EAC1C,eAAeA,IAAA,EAAE,SAAS,EAAE,SAAS;AAAA,EACrC,iBAAiB,qBAAqB,SAAS;AACjD,CAAC;AAEY,MAAA,eAAeC,6BAAsB,OAAO;AAAA,EACvD,uBAAuBD,IAAA,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC5C,sBAAsBA,IAAA,EACnB,OAA6B,CAAC,MAAM;AAC5B,WAAA,2BAA2B,MAAM,CAAC;AAAA,EAC1C,CAAA,EACA,SAAS;AACd,CAAC;AAEY,MAAA,YAAY,CAAC,cAA+B,SAAiB;AAClE,QAAA,SAASE,gBAAAA,UAAmB,cAAc,IAAI;AAEpD,SAAO,aAAa,MAAM,EAAE,GAAG,QAAQ,GAAG,cAAc;AAC1D;;;;"}
|
|
@@ -1,4 +1,24 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { RegisteredRouter, RouteIds } from '@tanstack/react-router';
|
|
3
|
+
import { CodeSplitGroupings } from './constants.cjs';
|
|
4
|
+
export declare const splitGroupingsSchema: z.ZodEffects<z.ZodArray<z.ZodArray<z.ZodUnion<[z.ZodLiteral<"loader">, z.ZodLiteral<"component">, z.ZodLiteral<"pendingComponent">, z.ZodLiteral<"errorComponent">, z.ZodLiteral<"notFoundComponent">]>, "many">, "many">, ("loader" | "component" | "pendingComponent" | "errorComponent" | "notFoundComponent")[][], ("loader" | "component" | "pendingComponent" | "errorComponent" | "notFoundComponent")[][]>;
|
|
5
|
+
export type CodeSplittingOptions = {
|
|
6
|
+
/**
|
|
7
|
+
* Use this function to programmatically control the code splitting behavior
|
|
8
|
+
* based on the `routeId` for each route.
|
|
9
|
+
*
|
|
10
|
+
* If you just need to change the default behavior, you can use the `defaultBehavior` option.
|
|
11
|
+
* @param params
|
|
12
|
+
*/
|
|
13
|
+
splitBehavior?: (params: {
|
|
14
|
+
routeId: RouteIds<RegisteredRouter['routeTree']>;
|
|
15
|
+
}) => CodeSplitGroupings | undefined | void;
|
|
16
|
+
/**
|
|
17
|
+
* The default/global configuration to control your code splitting behavior per route.
|
|
18
|
+
* @default [['component'],['pendingComponent'],['errorComponent'],['notFoundComponent']]
|
|
19
|
+
*/
|
|
20
|
+
defaultBehavior?: CodeSplitGroupings;
|
|
21
|
+
};
|
|
2
22
|
export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
3
23
|
target: z.ZodDefault<z.ZodOptional<z.ZodEnum<["react"]>>>;
|
|
4
24
|
virtualRouteConfig: z.ZodOptional<z.ZodUnion<[z.ZodType<import('@tanstack/virtual-file-routes').VirtualRootRoute, z.ZodTypeDef, import('@tanstack/virtual-file-routes').VirtualRootRoute>, z.ZodString]>>;
|
|
@@ -42,6 +62,7 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
42
62
|
}>>;
|
|
43
63
|
}, {
|
|
44
64
|
enableRouteGeneration: z.ZodOptional<z.ZodBoolean>;
|
|
65
|
+
codeSplittingOptions: z.ZodOptional<z.ZodType<CodeSplittingOptions, z.ZodTypeDef, CodeSplittingOptions>>;
|
|
45
66
|
}>, "strip", z.ZodTypeAny, {
|
|
46
67
|
target: "react";
|
|
47
68
|
routeFileIgnorePrefix: string;
|
|
@@ -59,6 +80,7 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
59
80
|
indexToken: string;
|
|
60
81
|
routeToken: string;
|
|
61
82
|
enableRouteGeneration?: boolean | undefined;
|
|
83
|
+
codeSplittingOptions?: CodeSplittingOptions | undefined;
|
|
62
84
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
63
85
|
routeFilePrefix?: string | undefined;
|
|
64
86
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -74,6 +96,7 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
74
96
|
} | undefined;
|
|
75
97
|
}, {
|
|
76
98
|
enableRouteGeneration?: boolean | undefined;
|
|
99
|
+
codeSplittingOptions?: CodeSplittingOptions | undefined;
|
|
77
100
|
target?: "react" | undefined;
|
|
78
101
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
79
102
|
routeFilePrefix?: string | undefined;
|
|
@@ -120,6 +143,7 @@ export declare const getConfig: (inlineConfig: Partial<Config>, root: string) =>
|
|
|
120
143
|
indexToken: string;
|
|
121
144
|
routeToken: string;
|
|
122
145
|
enableRouteGeneration?: boolean | undefined;
|
|
146
|
+
codeSplittingOptions?: CodeSplittingOptions | undefined;
|
|
123
147
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
124
148
|
routeFilePrefix?: string | undefined;
|
|
125
149
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
4
|
-
|
|
3
|
+
const tsrSplit = "tsr-split";
|
|
4
|
+
const splitRouteIdentNodes = [
|
|
5
|
+
"loader",
|
|
6
|
+
"component",
|
|
7
|
+
"pendingComponent",
|
|
8
|
+
"errorComponent",
|
|
9
|
+
"notFoundComponent"
|
|
10
|
+
];
|
|
11
|
+
const defaultCodeSplitGroupings = [
|
|
12
|
+
["component"],
|
|
13
|
+
["pendingComponent"],
|
|
14
|
+
["errorComponent"],
|
|
15
|
+
["notFoundComponent"]
|
|
16
|
+
];
|
|
17
|
+
exports.defaultCodeSplitGroupings = defaultCodeSplitGroupings;
|
|
18
|
+
exports.splitRouteIdentNodes = splitRouteIdentNodes;
|
|
19
|
+
exports.tsrSplit = tsrSplit;
|
|
5
20
|
//# sourceMappingURL=constants.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs","sources":["../../../src/core/constants.ts"],"sourcesContent":["export const
|
|
1
|
+
{"version":3,"file":"constants.cjs","sources":["../../../src/core/constants.ts"],"sourcesContent":["export const tsrSplit = 'tsr-split'\n\nexport const splitRouteIdentNodes = [\n 'loader',\n 'component',\n 'pendingComponent',\n 'errorComponent',\n 'notFoundComponent',\n] as const\nexport type SplitRouteIdentNodes = (typeof splitRouteIdentNodes)[number]\nexport type CodeSplitGroupings = Array<Array<SplitRouteIdentNodes>>\n\nexport const defaultCodeSplitGroupings: CodeSplitGroupings = [\n ['component'],\n ['pendingComponent'],\n ['errorComponent'],\n ['notFoundComponent'],\n]\n"],"names":[],"mappings":";;AAAO,MAAM,WAAW;AAEjB,MAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIO,MAAM,4BAAgD;AAAA,EAC3D,CAAC,WAAW;AAAA,EACZ,CAAC,kBAAkB;AAAA,EACnB,CAAC,gBAAgB;AAAA,EACjB,CAAC,mBAAmB;AACtB;;;;"}
|
|
@@ -1 +1,5 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const tsrSplit = "tsr-split";
|
|
2
|
+
export declare const splitRouteIdentNodes: readonly ["loader", "component", "pendingComponent", "errorComponent", "notFoundComponent"];
|
|
3
|
+
export type SplitRouteIdentNodes = (typeof splitRouteIdentNodes)[number];
|
|
4
|
+
export type CodeSplitGroupings = Array<Array<SplitRouteIdentNodes>>;
|
|
5
|
+
export declare const defaultCodeSplitGroupings: CodeSplitGroupings;
|
|
@@ -6,6 +6,7 @@ const routerUtils = require("@tanstack/router-utils");
|
|
|
6
6
|
const config = require("./config.cjs");
|
|
7
7
|
const compilers = require("./code-splitter/compilers.cjs");
|
|
8
8
|
const constants = require("./constants.cjs");
|
|
9
|
+
const pathIds = require("./code-splitter/path-ids.cjs");
|
|
9
10
|
const debug = process.env.TSR_VITE_DEBUG && ["true", "router-plugin"].includes(process.env.TSR_VITE_DEBUG);
|
|
10
11
|
function capitalizeFirst(str) {
|
|
11
12
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
@@ -39,26 +40,52 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
39
40
|
let ROOT = process.cwd();
|
|
40
41
|
let userConfig = options;
|
|
41
42
|
const isProduction = process.env.NODE_ENV === "production";
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
const getGlobalCodeSplitGroupings = () => {
|
|
44
|
+
var _a;
|
|
45
|
+
return ((_a = userConfig.codeSplittingOptions) == null ? void 0 : _a.defaultBehavior) || constants.defaultCodeSplitGroupings;
|
|
46
|
+
};
|
|
47
|
+
const getShouldSplitFn = () => {
|
|
48
|
+
var _a;
|
|
49
|
+
return (_a = userConfig.codeSplittingOptions) == null ? void 0 : _a.splitBehavior;
|
|
50
|
+
};
|
|
51
|
+
const handleCompilingReferenceFile = (code, id) => {
|
|
52
|
+
if (debug) console.info("Compiling Route: ", id);
|
|
53
|
+
const fromCode = compilers.detectCodeSplitGroupingsFromRoute({
|
|
45
54
|
code,
|
|
46
55
|
root: ROOT,
|
|
47
56
|
filename: id
|
|
48
57
|
});
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
|
|
58
|
+
if (fromCode.groupings) {
|
|
59
|
+
const res = config.splitGroupingsSchema.safeParse(fromCode.groupings);
|
|
60
|
+
if (!res.success) {
|
|
61
|
+
const message = res.error.errors.map((e) => e.message).join(". ");
|
|
62
|
+
throw new Error(
|
|
63
|
+
`The groupings for the route "${id}" are invalid.
|
|
64
|
+
${message}`
|
|
65
|
+
);
|
|
66
|
+
}
|
|
52
67
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
68
|
+
const userShouldSplitFn = getShouldSplitFn();
|
|
69
|
+
const pluginSplitBehavior = userShouldSplitFn == null ? void 0 : userShouldSplitFn({
|
|
70
|
+
routeId: fromCode.routeId
|
|
71
|
+
});
|
|
72
|
+
if (pluginSplitBehavior) {
|
|
73
|
+
const res = config.splitGroupingsSchema.safeParse(pluginSplitBehavior);
|
|
74
|
+
if (!res.success) {
|
|
75
|
+
const message = res.error.errors.map((e) => e.message).join(". ");
|
|
76
|
+
throw new Error(
|
|
77
|
+
`The groupings returned when using \`splitBehavior\` for the route "${id}" are invalid.
|
|
78
|
+
${message}`
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const splitGroupings = fromCode.groupings || pluginSplitBehavior || getGlobalCodeSplitGroupings();
|
|
57
83
|
const compiledReferenceRoute = compilers.compileCodeSplitReferenceRoute({
|
|
58
84
|
code,
|
|
59
85
|
root: ROOT,
|
|
60
86
|
filename: id,
|
|
61
|
-
isProduction
|
|
87
|
+
runtimeEnv: isProduction ? "prod" : "dev",
|
|
88
|
+
codeSplitGroupings: splitGroupings
|
|
62
89
|
});
|
|
63
90
|
if (debug) {
|
|
64
91
|
routerUtils.logDiff(code, compiledReferenceRoute.code);
|
|
@@ -66,6 +93,32 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
66
93
|
}
|
|
67
94
|
return compiledReferenceRoute;
|
|
68
95
|
};
|
|
96
|
+
const handleCompilingVirtualFile = (code, id) => {
|
|
97
|
+
if (debug) console.info("Splitting Route: ", id);
|
|
98
|
+
const [_, ...pathnameParts] = id.split("?");
|
|
99
|
+
const searchParams = new URLSearchParams(pathnameParts.join("?"));
|
|
100
|
+
const splitValue = searchParams.get(constants.tsrSplit);
|
|
101
|
+
if (!splitValue) {
|
|
102
|
+
throw new Error(
|
|
103
|
+
`The split value for the virtual route "${id}" was not found.`
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
const rawGrouping = pathIds.decodeIdentifier(splitValue);
|
|
107
|
+
const grouping = [...new Set(rawGrouping)].filter(
|
|
108
|
+
(p) => constants.splitRouteIdentNodes.includes(p)
|
|
109
|
+
);
|
|
110
|
+
const result = compilers.compileCodeSplitVirtualRoute({
|
|
111
|
+
code,
|
|
112
|
+
root: ROOT,
|
|
113
|
+
filename: id,
|
|
114
|
+
splitTargets: grouping
|
|
115
|
+
});
|
|
116
|
+
if (debug) {
|
|
117
|
+
routerUtils.logDiff(code, result.code);
|
|
118
|
+
console.log("Output:\n", result.code + "\n\n");
|
|
119
|
+
}
|
|
120
|
+
return result;
|
|
121
|
+
};
|
|
69
122
|
return {
|
|
70
123
|
name: "router-code-splitter-plugin",
|
|
71
124
|
enforce: "pre",
|
|
@@ -76,8 +129,8 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
76
129
|
const url = node_url.pathToFileURL(id);
|
|
77
130
|
url.searchParams.delete("v");
|
|
78
131
|
id = node_url.fileURLToPath(url).replace(/\\/g, "/");
|
|
79
|
-
if (id.includes(constants.
|
|
80
|
-
return
|
|
132
|
+
if (id.includes(constants.tsrSplit)) {
|
|
133
|
+
return handleCompilingVirtualFile(code, id);
|
|
81
134
|
} else if (fileIsInRoutesDirectory(id, userConfig.routesDirectory) && (code.includes("createRoute(") || code.includes("createFileRoute("))) {
|
|
82
135
|
for (const externalPlugin of bannedBeforeExternalPlugins) {
|
|
83
136
|
if (!externalPlugin.frameworks.includes(framework)) {
|
|
@@ -87,7 +140,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
87
140
|
throw new FoundPluginInBeforeCode(externalPlugin, framework);
|
|
88
141
|
}
|
|
89
142
|
}
|
|
90
|
-
return
|
|
143
|
+
return handleCompilingReferenceFile(code, id);
|
|
91
144
|
}
|
|
92
145
|
return null;
|
|
93
146
|
},
|
|
@@ -95,7 +148,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
95
148
|
if (!userConfig.autoCodeSplitting) {
|
|
96
149
|
return void 0;
|
|
97
150
|
}
|
|
98
|
-
if (fileIsInRoutesDirectory(id, userConfig.routesDirectory) || id.includes(constants.
|
|
151
|
+
if (fileIsInRoutesDirectory(id, userConfig.routesDirectory) || id.includes(constants.tsrSplit)) {
|
|
99
152
|
return true;
|
|
100
153
|
}
|
|
101
154
|
return false;
|
|
@@ -106,7 +159,7 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
106
159
|
userConfig = config.getConfig(options, ROOT);
|
|
107
160
|
}
|
|
108
161
|
},
|
|
109
|
-
rspack(
|
|
162
|
+
rspack(_compiler) {
|
|
110
163
|
ROOT = process.cwd();
|
|
111
164
|
userConfig = config.getConfig(options, ROOT);
|
|
112
165
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-code-splitter-plugin.cjs","sources":["../../../src/core/router-code-splitter-plugin.ts"],"sourcesContent":["import { isAbsolute, join, normalize } from 'node:path'\n\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { logDiff } from '@tanstack/router-utils'\nimport { getConfig } from './config'\nimport {\n compileCodeSplitReferenceRoute,\n compileCodeSplitVirtualRoute,\n} from './code-splitter/compilers'\nimport { splitPrefix } from './constants'\n\nimport type { Config } from './config'\nimport type { UnpluginContextMeta, UnpluginFactory } from 'unplugin'\n\nconst debug =\n process.env.TSR_VITE_DEBUG &&\n ['true', 'router-plugin'].includes(process.env.TSR_VITE_DEBUG)\n\nfunction capitalizeFirst(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nfunction fileIsInRoutesDirectory(\n filePath: string,\n routesDirectory: string,\n): boolean {\n const routesDirectoryPath = isAbsolute(routesDirectory)\n ? routesDirectory\n : join(process.cwd(), routesDirectory)\n\n const path = normalize(filePath)\n\n return path.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 let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n const isProduction = process.env.NODE_ENV === 'production'\n\n const handleSplittingFile = (code: string, id: string) => {\n if (debug) console.info('Splitting Route: ', id)\n\n const compiledVirtualRoute = compileCodeSplitVirtualRoute({\n code,\n root: ROOT,\n filename: id,\n })\n\n if (debug) {\n logDiff(code, compiledVirtualRoute.code)\n console.log('Output:\\n', compiledVirtualRoute.code)\n }\n\n return compiledVirtualRoute\n }\n\n const handleCompilingFile = (code: string, id: string) => {\n if (debug) console.info('Compiling Route: ', id)\n\n const compiledReferenceRoute = compileCodeSplitReferenceRoute({\n code,\n root: ROOT,\n filename: id,\n isProduction,\n })\n\n if (debug) {\n logDiff(code, compiledReferenceRoute.code)\n console.log('Output:\\n', compiledReferenceRoute.code + '\\n\\n')\n }\n\n return compiledReferenceRoute\n }\n\n return {\n name: 'router-code-splitter-plugin',\n enforce: 'pre',\n\n transform(code, id) {\n if (!userConfig.autoCodeSplitting) {\n return null\n }\n\n const url = pathToFileURL(id)\n url.searchParams.delete('v')\n id = fileURLToPath(url).replace(/\\\\/g, '/')\n\n if (id.includes(splitPrefix)) {\n return handleSplittingFile(code, id)\n } else if (\n fileIsInRoutesDirectory(id, userConfig.routesDirectory) &&\n (code.includes('createRoute(') || code.includes('createFileRoute('))\n ) {\n for (const externalPlugin of bannedBeforeExternalPlugins) {\n if (!externalPlugin.frameworks.includes(framework)) {\n continue\n }\n\n if (code.includes(externalPlugin.identifier)) {\n throw new FoundPluginInBeforeCode(externalPlugin, framework)\n }\n }\n\n return handleCompilingFile(code, id)\n }\n\n return null\n },\n\n transformInclude(id) {\n if (!userConfig.autoCodeSplitting) {\n return undefined\n }\n\n if (\n fileIsInRoutesDirectory(id, userConfig.routesDirectory) ||\n id.includes(splitPrefix)\n ) {\n return true\n }\n return false\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n\n userConfig = getConfig(options, ROOT)\n },\n },\n\n rspack(compiler) {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n },\n\n webpack(compiler) {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n\n if (\n userConfig.autoCodeSplitting &&\n compiler.options.mode === 'production'\n ) {\n compiler.hooks.done.tap(PLUGIN_NAME, () => {\n console.info('✅ ' + PLUGIN_NAME + ': code-splitting done!')\n setTimeout(() => {\n process.exit(0)\n })\n })\n }\n },\n }\n}\n"],"names":["isAbsolute","join","normalize","compileCodeSplitVirtualRoute","logDiff","compileCodeSplitReferenceRoute","pathToFileURL","fileURLToPath","splitPrefix","config","getConfig"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router-code-splitter-plugin.cjs","sources":["../../../src/core/router-code-splitter-plugin.ts"],"sourcesContent":["/**\n * It is important to familiarize yourself with how the code-splitting works in this plugin.\n * https://github.com/TanStack/router/pull/3355\n */\n\nimport { isAbsolute, join, normalize } from 'node:path'\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { logDiff } from '@tanstack/router-utils'\nimport { getConfig, splitGroupingsSchema } from './config'\nimport {\n compileCodeSplitReferenceRoute,\n compileCodeSplitVirtualRoute,\n detectCodeSplitGroupingsFromRoute,\n} from './code-splitter/compilers'\nimport {\n defaultCodeSplitGroupings,\n splitRouteIdentNodes,\n tsrSplit,\n} from './constants'\nimport { decodeIdentifier } from './code-splitter/path-ids'\nimport type { CodeSplitGroupings, SplitRouteIdentNodes } from './constants'\n\nimport type { Config } from './config'\nimport type {\n UnpluginContextMeta,\n UnpluginFactory,\n TransformResult as UnpluginTransformResult,\n} from 'unplugin'\n\nconst debug =\n process.env.TSR_VITE_DEBUG &&\n ['true', 'router-plugin'].includes(process.env.TSR_VITE_DEBUG)\n\nfunction capitalizeFirst(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nfunction fileIsInRoutesDirectory(\n filePath: string,\n routesDirectory: string,\n): boolean {\n const routesDirectoryPath = isAbsolute(routesDirectory)\n ? routesDirectory\n : join(process.cwd(), routesDirectory)\n\n const path = normalize(filePath)\n\n return path.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 let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n const isProduction = process.env.NODE_ENV === 'production'\n\n const getGlobalCodeSplitGroupings = () => {\n return (\n userConfig.codeSplittingOptions?.defaultBehavior ||\n defaultCodeSplitGroupings\n )\n }\n const getShouldSplitFn = () => {\n return userConfig.codeSplittingOptions?.splitBehavior\n }\n\n const handleCompilingReferenceFile = (\n code: string,\n id: string,\n ): UnpluginTransformResult => {\n if (debug) console.info('Compiling Route: ', id)\n\n const fromCode = detectCodeSplitGroupingsFromRoute({\n code,\n root: ROOT,\n filename: id,\n })\n\n if (fromCode.groupings) {\n const res = splitGroupingsSchema.safeParse(fromCode.groupings)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const userShouldSplitFn = getShouldSplitFn()\n\n const pluginSplitBehavior = userShouldSplitFn?.({\n routeId: fromCode.routeId,\n }) as CodeSplitGroupings | undefined\n\n if (pluginSplitBehavior) {\n const res = splitGroupingsSchema.safeParse(pluginSplitBehavior)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings returned when using \\`splitBehavior\\` for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const splitGroupings: CodeSplitGroupings =\n fromCode.groupings || pluginSplitBehavior || getGlobalCodeSplitGroupings()\n\n const compiledReferenceRoute = compileCodeSplitReferenceRoute({\n code,\n root: ROOT,\n filename: id,\n runtimeEnv: isProduction ? 'prod' : 'dev',\n codeSplitGroupings: splitGroupings,\n })\n\n if (debug) {\n logDiff(code, compiledReferenceRoute.code)\n console.log('Output:\\n', compiledReferenceRoute.code + '\\n\\n')\n }\n\n return compiledReferenceRoute\n }\n\n const handleCompilingVirtualFile = (\n code: string,\n id: string,\n ): UnpluginTransformResult => {\n if (debug) console.info('Splitting Route: ', id)\n\n const [_, ...pathnameParts] = id.split('?')\n\n const searchParams = new URLSearchParams(pathnameParts.join('?'))\n const splitValue = searchParams.get(tsrSplit)\n\n if (!splitValue) {\n throw new Error(\n `The split value for the virtual route \"${id}\" was not found.`,\n )\n }\n\n const rawGrouping = decodeIdentifier(splitValue)\n const grouping = [...new Set(rawGrouping)].filter((p) =>\n splitRouteIdentNodes.includes(p as any),\n ) as Array<SplitRouteIdentNodes>\n\n const result = compileCodeSplitVirtualRoute({\n code,\n root: ROOT,\n filename: id,\n splitTargets: grouping,\n })\n\n if (debug) {\n logDiff(code, result.code)\n console.log('Output:\\n', result.code + '\\n\\n')\n }\n\n return result\n }\n\n return {\n name: 'router-code-splitter-plugin',\n enforce: 'pre',\n\n transform(code, id) {\n if (!userConfig.autoCodeSplitting) {\n return null\n }\n\n const url = pathToFileURL(id)\n url.searchParams.delete('v')\n id = fileURLToPath(url).replace(/\\\\/g, '/')\n\n if (id.includes(tsrSplit)) {\n return handleCompilingVirtualFile(code, id)\n } else if (\n fileIsInRoutesDirectory(id, userConfig.routesDirectory) &&\n (code.includes('createRoute(') || code.includes('createFileRoute('))\n ) {\n for (const externalPlugin of bannedBeforeExternalPlugins) {\n if (!externalPlugin.frameworks.includes(framework)) {\n continue\n }\n\n if (code.includes(externalPlugin.identifier)) {\n throw new FoundPluginInBeforeCode(externalPlugin, framework)\n }\n }\n\n return handleCompilingReferenceFile(code, id)\n }\n\n return null\n },\n\n transformInclude(id) {\n if (!userConfig.autoCodeSplitting) {\n return undefined\n }\n\n if (\n fileIsInRoutesDirectory(id, userConfig.routesDirectory) ||\n id.includes(tsrSplit)\n ) {\n return true\n }\n return false\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n\n userConfig = getConfig(options, ROOT)\n },\n },\n\n rspack(_compiler) {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n },\n\n webpack(compiler) {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n\n if (\n userConfig.autoCodeSplitting &&\n compiler.options.mode === 'production'\n ) {\n compiler.hooks.done.tap(PLUGIN_NAME, () => {\n console.info('✅ ' + PLUGIN_NAME + ': code-splitting done!')\n setTimeout(() => {\n process.exit(0)\n })\n })\n }\n },\n }\n}\n"],"names":["isAbsolute","join","normalize","defaultCodeSplitGroupings","detectCodeSplitGroupingsFromRoute","splitGroupingsSchema","compileCodeSplitReferenceRoute","logDiff","tsrSplit","decodeIdentifier","splitRouteIdentNodes","compileCodeSplitVirtualRoute","pathToFileURL","fileURLToPath","config","getConfig"],"mappings":"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"}
|
package/dist/cjs/esbuild.d.cts
CHANGED
|
@@ -25,6 +25,7 @@ declare const TanStackRouterGeneratorEsbuild: (options?: Partial<{
|
|
|
25
25
|
indexToken: string;
|
|
26
26
|
routeToken: string;
|
|
27
27
|
enableRouteGeneration?: boolean | undefined;
|
|
28
|
+
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
28
29
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
29
30
|
routeFilePrefix?: string | undefined;
|
|
30
31
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -65,6 +66,7 @@ declare const TanStackRouterCodeSplitterEsbuild: (options?: Partial<{
|
|
|
65
66
|
indexToken: string;
|
|
66
67
|
routeToken: string;
|
|
67
68
|
enableRouteGeneration?: boolean | undefined;
|
|
69
|
+
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
68
70
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
69
71
|
routeFilePrefix?: string | undefined;
|
|
70
72
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -105,6 +107,7 @@ declare const TanStackRouterEsbuild: (options?: Partial<{
|
|
|
105
107
|
indexToken: string;
|
|
106
108
|
routeToken: string;
|
|
107
109
|
enableRouteGeneration?: boolean | undefined;
|
|
110
|
+
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
108
111
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
109
112
|
routeFilePrefix?: string | undefined;
|
|
110
113
|
routeFileIgnorePattern?: string | undefined;
|
package/dist/cjs/rspack.d.cts
CHANGED
|
@@ -29,6 +29,7 @@ declare const TanStackRouterGeneratorRspack: (options?: Partial<{
|
|
|
29
29
|
indexToken: string;
|
|
30
30
|
routeToken: string;
|
|
31
31
|
enableRouteGeneration?: boolean | undefined;
|
|
32
|
+
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
32
33
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
33
34
|
routeFilePrefix?: string | undefined;
|
|
34
35
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -73,6 +74,7 @@ declare const TanStackRouterCodeSplitterRspack: (options?: Partial<{
|
|
|
73
74
|
indexToken: string;
|
|
74
75
|
routeToken: string;
|
|
75
76
|
enableRouteGeneration?: boolean | undefined;
|
|
77
|
+
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
76
78
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
77
79
|
routeFilePrefix?: string | undefined;
|
|
78
80
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -117,6 +119,7 @@ declare const TanStackRouterRspack: (options?: Partial<{
|
|
|
117
119
|
indexToken: string;
|
|
118
120
|
routeToken: string;
|
|
119
121
|
enableRouteGeneration?: boolean | undefined;
|
|
122
|
+
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
120
123
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
121
124
|
routeFilePrefix?: string | undefined;
|
|
122
125
|
routeFileIgnorePattern?: string | undefined;
|
package/dist/cjs/vite.d.cts
CHANGED
|
@@ -25,6 +25,7 @@ declare const TanStackRouterGeneratorVite: (options?: Partial<{
|
|
|
25
25
|
indexToken: string;
|
|
26
26
|
routeToken: string;
|
|
27
27
|
enableRouteGeneration?: boolean | undefined;
|
|
28
|
+
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
28
29
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
29
30
|
routeFilePrefix?: string | undefined;
|
|
30
31
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -65,6 +66,7 @@ declare const TanStackRouterCodeSplitterVite: (options?: Partial<{
|
|
|
65
66
|
indexToken: string;
|
|
66
67
|
routeToken: string;
|
|
67
68
|
enableRouteGeneration?: boolean | undefined;
|
|
69
|
+
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
68
70
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
69
71
|
routeFilePrefix?: string | undefined;
|
|
70
72
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -105,6 +107,7 @@ declare const TanStackRouterVite: (options?: Partial<{
|
|
|
105
107
|
indexToken: string;
|
|
106
108
|
routeToken: string;
|
|
107
109
|
enableRouteGeneration?: boolean | undefined;
|
|
110
|
+
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
108
111
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
109
112
|
routeFilePrefix?: string | undefined;
|
|
110
113
|
routeFileIgnorePattern?: string | undefined;
|
package/dist/cjs/webpack.d.cts
CHANGED
|
@@ -25,6 +25,7 @@ declare const TanStackRouterGeneratorWebpack: (options?: Partial<{
|
|
|
25
25
|
indexToken: string;
|
|
26
26
|
routeToken: string;
|
|
27
27
|
enableRouteGeneration?: boolean | undefined;
|
|
28
|
+
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
28
29
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
29
30
|
routeFilePrefix?: string | undefined;
|
|
30
31
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -65,6 +66,7 @@ declare const TanStackRouterCodeSplitterWebpack: (options?: Partial<{
|
|
|
65
66
|
indexToken: string;
|
|
66
67
|
routeToken: string;
|
|
67
68
|
enableRouteGeneration?: boolean | undefined;
|
|
69
|
+
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
68
70
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
69
71
|
routeFilePrefix?: string | undefined;
|
|
70
72
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -105,6 +107,7 @@ declare const TanStackRouterWebpack: (options?: Partial<{
|
|
|
105
107
|
indexToken: string;
|
|
106
108
|
routeToken: string;
|
|
107
109
|
enableRouteGeneration?: boolean | undefined;
|
|
110
|
+
codeSplittingOptions?: import('./core/config.cjs').CodeSplittingOptions | undefined;
|
|
108
111
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
109
112
|
routeFilePrefix?: string | undefined;
|
|
110
113
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { GeneratorResult, ParseAstOptions } from '@tanstack/router-utils';
|
|
2
|
+
import { CodeSplitGroupings, SplitRouteIdentNodes } from '../constants.js';
|
|
2
3
|
export declare function compileCodeSplitReferenceRoute(opts: ParseAstOptions & {
|
|
3
|
-
|
|
4
|
+
runtimeEnv: 'dev' | 'prod';
|
|
5
|
+
codeSplitGroupings: CodeSplitGroupings;
|
|
4
6
|
}): GeneratorResult;
|
|
5
|
-
export declare function compileCodeSplitVirtualRoute(opts: ParseAstOptions
|
|
7
|
+
export declare function compileCodeSplitVirtualRoute(opts: ParseAstOptions & {
|
|
8
|
+
splitTargets: Array<SplitRouteIdentNodes>;
|
|
9
|
+
}): GeneratorResult;
|
|
10
|
+
/**
|
|
11
|
+
* This function should read get the options from by searching for the key `codeSplitGroupings`
|
|
12
|
+
* on createFileRoute and return it's values if it exists, else return undefined
|
|
13
|
+
*/
|
|
14
|
+
export declare function detectCodeSplitGroupingsFromRoute(opts: ParseAstOptions): {
|
|
15
|
+
groupings: CodeSplitGroupings | undefined;
|
|
16
|
+
routeId: string;
|
|
17
|
+
};
|