@tanstack/router-plugin 1.121.0-alpha.27 → 1.121.0-alpha.28
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 +66 -40
- package/dist/cjs/core/code-splitter/compilers.cjs.map +1 -1
- package/dist/cjs/core/code-splitter/compilers.d.cts +3 -3
- package/dist/cjs/core/code-splitter/framework-options.cjs.map +1 -1
- package/dist/cjs/core/code-splitter/path-ids.cjs.map +1 -1
- package/dist/cjs/core/config.cjs +11 -1
- package/dist/cjs/core/config.cjs.map +1 -1
- package/dist/cjs/core/config.d.cts +49 -4
- package/dist/cjs/core/route-autoimport-plugin.cjs +52 -45
- package/dist/cjs/core/route-autoimport-plugin.cjs.map +1 -1
- package/dist/cjs/core/route-hmr-statement.cjs.map +1 -1
- package/dist/cjs/core/router-code-splitter-plugin.cjs +84 -64
- package/dist/cjs/core/router-code-splitter-plugin.cjs.map +1 -1
- package/dist/cjs/core/router-composed-plugin.cjs +12 -3
- package/dist/cjs/core/router-composed-plugin.cjs.map +1 -1
- package/dist/cjs/core/router-generator-plugin.cjs +27 -25
- package/dist/cjs/core/router-generator-plugin.cjs.map +1 -1
- package/dist/cjs/core/router-hmr-plugin.cjs +38 -29
- package/dist/cjs/core/router-hmr-plugin.cjs.map +1 -1
- package/dist/cjs/core/router-hmr-plugin.d.cts +1 -6
- package/dist/cjs/core/utils.cjs +0 -7
- package/dist/cjs/core/utils.cjs.map +1 -1
- package/dist/cjs/core/utils.d.cts +0 -1
- package/dist/cjs/esbuild.cjs.map +1 -1
- package/dist/cjs/esbuild.d.cts +20 -0
- package/dist/cjs/index.cjs +4 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +1 -0
- package/dist/cjs/rspack.cjs.map +1 -1
- package/dist/cjs/rspack.d.cts +20 -0
- package/dist/cjs/vite.cjs.map +1 -1
- package/dist/cjs/vite.d.cts +25 -0
- package/dist/cjs/webpack.cjs.map +1 -1
- package/dist/cjs/webpack.d.cts +20 -0
- package/dist/esm/core/code-splitter/compilers.d.ts +3 -3
- package/dist/esm/core/code-splitter/compilers.js +66 -40
- package/dist/esm/core/code-splitter/compilers.js.map +1 -1
- package/dist/esm/core/code-splitter/framework-options.js.map +1 -1
- package/dist/esm/core/code-splitter/path-ids.js.map +1 -1
- package/dist/esm/core/config.d.ts +49 -4
- package/dist/esm/core/config.js +11 -1
- package/dist/esm/core/config.js.map +1 -1
- package/dist/esm/core/route-autoimport-plugin.js +53 -46
- package/dist/esm/core/route-autoimport-plugin.js.map +1 -1
- package/dist/esm/core/route-hmr-statement.js.map +1 -1
- package/dist/esm/core/router-code-splitter-plugin.js +86 -66
- package/dist/esm/core/router-code-splitter-plugin.js.map +1 -1
- package/dist/esm/core/router-composed-plugin.js +11 -2
- package/dist/esm/core/router-composed-plugin.js.map +1 -1
- package/dist/esm/core/router-generator-plugin.js +28 -26
- package/dist/esm/core/router-generator-plugin.js.map +1 -1
- package/dist/esm/core/router-hmr-plugin.d.ts +1 -6
- package/dist/esm/core/router-hmr-plugin.js +39 -30
- package/dist/esm/core/router-hmr-plugin.js.map +1 -1
- package/dist/esm/core/utils.d.ts +0 -1
- package/dist/esm/core/utils.js +1 -8
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/esbuild.d.ts +20 -0
- package/dist/esm/esbuild.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/rspack.d.ts +20 -0
- package/dist/esm/vite.d.ts +25 -0
- package/dist/esm/vite.js.map +1 -1
- package/dist/esm/webpack.d.ts +20 -0
- package/package.json +15 -15
- package/src/core/code-splitter/compilers.ts +95 -60
- package/src/core/config.ts +25 -0
- package/src/core/route-autoimport-plugin.ts +59 -53
- package/src/core/router-code-splitter-plugin.ts +95 -80
- package/src/core/router-composed-plugin.ts +12 -2
- package/src/core/router-generator-plugin.ts +32 -32
- package/src/core/router-hmr-plugin.ts +42 -37
- package/src/core/utils.ts +0 -15
- package/src/global.d.ts +7 -0
- package/src/index.ts +5 -0
|
@@ -18,8 +18,20 @@ export type CodeSplittingOptions = {
|
|
|
18
18
|
* @default [['component'],['pendingComponent'],['errorComponent'],['notFoundComponent']]
|
|
19
19
|
*/
|
|
20
20
|
defaultBehavior?: CodeSplitGroupings;
|
|
21
|
+
/**
|
|
22
|
+
* The nodes that shall be deleted from the route.
|
|
23
|
+
* @default undefined
|
|
24
|
+
*/
|
|
25
|
+
deleteNodes?: Array<DeletableNodes>;
|
|
26
|
+
/**
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
29
|
+
addHmr?: boolean;
|
|
21
30
|
};
|
|
22
|
-
|
|
31
|
+
declare const DELETABLE_NODES: readonly ["ssr"];
|
|
32
|
+
export declare const deletableNodesSchema: z.ZodEnum<["ssr"]>;
|
|
33
|
+
export type DeletableNodes = (typeof DELETABLE_NODES)[number];
|
|
34
|
+
export declare const configSchema: z.ZodObject<{
|
|
23
35
|
target: z.ZodDefault<z.ZodOptional<z.ZodEnum<["react", "solid"]>>>;
|
|
24
36
|
virtualRouteConfig: z.ZodOptional<z.ZodUnion<[z.ZodType<import('@tanstack/virtual-file-routes').VirtualRootRoute, z.ZodTypeDef, import('@tanstack/virtual-file-routes').VirtualRootRoute>, z.ZodString]>>;
|
|
25
37
|
routeFilePrefix: z.ZodOptional<z.ZodString>;
|
|
@@ -33,7 +45,7 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<z.object
|
|
|
33
45
|
indexToken: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
34
46
|
routeToken: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
35
47
|
pathParamsAllowedCharacters: z.ZodOptional<z.ZodArray<z.ZodEnum<[";", ":", "@", "&", "=", "+", "$", ","]>, "many">>;
|
|
36
|
-
}
|
|
48
|
+
} & {
|
|
37
49
|
generatedRouteTree: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
38
50
|
disableTypes: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
39
51
|
verboseFileRoutes: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -60,10 +72,27 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<z.object
|
|
|
60
72
|
}>>;
|
|
61
73
|
plugins: z.ZodOptional<z.ZodArray<z.ZodType<import('@tanstack/router-generator').GeneratorPlugin, z.ZodTypeDef, import('@tanstack/router-generator').GeneratorPlugin>, "many">>;
|
|
62
74
|
tmpDir: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
63
|
-
}
|
|
75
|
+
} & {
|
|
64
76
|
enableRouteGeneration: z.ZodOptional<z.ZodBoolean>;
|
|
65
77
|
codeSplittingOptions: z.ZodOptional<z.ZodType<CodeSplittingOptions, z.ZodTypeDef, CodeSplittingOptions>>;
|
|
66
|
-
|
|
78
|
+
plugin: z.ZodOptional<z.ZodObject<{
|
|
79
|
+
vite: z.ZodOptional<z.ZodObject<{
|
|
80
|
+
environmentName: z.ZodOptional<z.ZodString>;
|
|
81
|
+
}, "strip", z.ZodTypeAny, {
|
|
82
|
+
environmentName?: string | undefined;
|
|
83
|
+
}, {
|
|
84
|
+
environmentName?: string | undefined;
|
|
85
|
+
}>>;
|
|
86
|
+
}, "strip", z.ZodTypeAny, {
|
|
87
|
+
vite?: {
|
|
88
|
+
environmentName?: string | undefined;
|
|
89
|
+
} | undefined;
|
|
90
|
+
}, {
|
|
91
|
+
vite?: {
|
|
92
|
+
environmentName?: string | undefined;
|
|
93
|
+
} | undefined;
|
|
94
|
+
}>>;
|
|
95
|
+
}, "strip", z.ZodTypeAny, {
|
|
67
96
|
target: "react" | "solid";
|
|
68
97
|
routeFileIgnorePrefix: string;
|
|
69
98
|
routesDirectory: string;
|
|
@@ -81,6 +110,11 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<z.object
|
|
|
81
110
|
tmpDir: string;
|
|
82
111
|
enableRouteGeneration?: boolean | undefined;
|
|
83
112
|
codeSplittingOptions?: CodeSplittingOptions | undefined;
|
|
113
|
+
plugin?: {
|
|
114
|
+
vite?: {
|
|
115
|
+
environmentName?: string | undefined;
|
|
116
|
+
} | undefined;
|
|
117
|
+
} | undefined;
|
|
84
118
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
85
119
|
routeFilePrefix?: string | undefined;
|
|
86
120
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -98,6 +132,11 @@ export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<z.object
|
|
|
98
132
|
}, {
|
|
99
133
|
enableRouteGeneration?: boolean | undefined;
|
|
100
134
|
codeSplittingOptions?: CodeSplittingOptions | undefined;
|
|
135
|
+
plugin?: {
|
|
136
|
+
vite?: {
|
|
137
|
+
environmentName?: string | undefined;
|
|
138
|
+
} | undefined;
|
|
139
|
+
} | undefined;
|
|
101
140
|
target?: "react" | "solid" | undefined;
|
|
102
141
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
103
142
|
routeFilePrefix?: string | undefined;
|
|
@@ -146,6 +185,11 @@ export declare const getConfig: (inlineConfig: Partial<Config>, root: string) =>
|
|
|
146
185
|
tmpDir: string;
|
|
147
186
|
enableRouteGeneration?: boolean | undefined;
|
|
148
187
|
codeSplittingOptions?: CodeSplittingOptions | undefined;
|
|
188
|
+
plugin?: {
|
|
189
|
+
vite?: {
|
|
190
|
+
environmentName?: string | undefined;
|
|
191
|
+
} | undefined;
|
|
192
|
+
} | undefined;
|
|
149
193
|
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
150
194
|
routeFilePrefix?: string | undefined;
|
|
151
195
|
routeFileIgnorePattern?: string | undefined;
|
|
@@ -164,3 +208,4 @@ export declare const getConfig: (inlineConfig: Partial<Config>, root: string) =>
|
|
|
164
208
|
export type Config = z.infer<typeof configSchema>;
|
|
165
209
|
export type ConfigInput = z.input<typeof configSchema>;
|
|
166
210
|
export type ConfigOutput = z.output<typeof configSchema>;
|
|
211
|
+
export {};
|
|
@@ -26,57 +26,64 @@ const unpluginRouteAutoImportFactory = (options = {}) => {
|
|
|
26
26
|
let ROOT = process.cwd();
|
|
27
27
|
let userConfig = options;
|
|
28
28
|
return {
|
|
29
|
-
name: "router
|
|
29
|
+
name: "tanstack-router:autoimport",
|
|
30
30
|
enforce: "pre",
|
|
31
|
-
transform
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
31
|
+
transform: {
|
|
32
|
+
filter: {
|
|
33
|
+
// this is necessary for webpack / rspack to avoid matching .html files
|
|
34
|
+
id: /\.(m|c)?(j|t)sx?$/,
|
|
35
|
+
code: /createFileRoute\(|createLazyFileRoute\(/
|
|
36
|
+
},
|
|
37
|
+
handler(code, id) {
|
|
38
|
+
if (!globalThis.TSR_ROUTES_BY_ID_MAP?.has(id)) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
let routeType;
|
|
42
|
+
if (code.includes("createFileRoute(")) {
|
|
43
|
+
routeType = "createFileRoute";
|
|
44
|
+
} else if (code.includes("createLazyFileRoute(")) {
|
|
45
|
+
routeType = "createLazyFileRoute";
|
|
46
|
+
} else {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const routerImportPath = `@tanstack/${userConfig.target}-router`;
|
|
50
|
+
const ast = routerUtils.parseAst({ code });
|
|
51
|
+
let isCreateRouteFunctionImported = false;
|
|
52
|
+
babel.traverse(ast, {
|
|
53
|
+
Program: {
|
|
54
|
+
enter(programPath) {
|
|
55
|
+
programPath.traverse({
|
|
56
|
+
ImportDeclaration(path) {
|
|
57
|
+
const importedSpecifiers = path.node.specifiers.map(
|
|
58
|
+
(specifier) => specifier.local.name
|
|
59
|
+
);
|
|
60
|
+
if (importedSpecifiers.includes(routeType) && path.node.source.value === routerImportPath) {
|
|
61
|
+
isCreateRouteFunctionImported = true;
|
|
62
|
+
}
|
|
53
63
|
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
56
66
|
}
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
if (!isCreateRouteFunctionImported) {
|
|
60
|
-
if (utils.debug) console.info("Adding autoimports to route ", id);
|
|
61
|
-
const autoImportStatement = template__namespace.statement(
|
|
62
|
-
`import { ${routeType} } from '${routerImportPath}'`
|
|
63
|
-
)();
|
|
64
|
-
ast.program.body.unshift(autoImportStatement);
|
|
65
|
-
const result = routerUtils.generateFromAst(ast, {
|
|
66
|
-
sourceMaps: true,
|
|
67
|
-
filename: id,
|
|
68
|
-
sourceFileName: id
|
|
69
67
|
});
|
|
70
|
-
if (
|
|
71
|
-
|
|
72
|
-
|
|
68
|
+
if (!isCreateRouteFunctionImported) {
|
|
69
|
+
if (utils.debug) console.info("Adding autoimports to route ", id);
|
|
70
|
+
const autoImportStatement = template__namespace.statement(
|
|
71
|
+
`import { ${routeType} } from '${routerImportPath}'`
|
|
72
|
+
)();
|
|
73
|
+
ast.program.body.unshift(autoImportStatement);
|
|
74
|
+
const result = routerUtils.generateFromAst(ast, {
|
|
75
|
+
sourceMaps: true,
|
|
76
|
+
filename: id,
|
|
77
|
+
sourceFileName: id
|
|
78
|
+
});
|
|
79
|
+
if (utils.debug) {
|
|
80
|
+
routerUtils.logDiff(code, result.code);
|
|
81
|
+
console.log("Output:\n", result.code + "\n\n");
|
|
82
|
+
}
|
|
83
|
+
return result;
|
|
73
84
|
}
|
|
74
|
-
return
|
|
85
|
+
return null;
|
|
75
86
|
}
|
|
76
|
-
return null;
|
|
77
|
-
},
|
|
78
|
-
transformInclude(id) {
|
|
79
|
-
return utils.fileIsInRoutesDirectory(id, userConfig.routesDirectory);
|
|
80
87
|
},
|
|
81
88
|
vite: {
|
|
82
89
|
configResolved(config$1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-autoimport-plugin.cjs","sources":["../../../src/core/route-autoimport-plugin.ts"],"sourcesContent":["import { generateFromAst, logDiff, parseAst } from '@tanstack/router-utils'\nimport babel from '@babel/core'\nimport * as template from '@babel/template'\nimport { getConfig } from './config'\nimport { debug
|
|
1
|
+
{"version":3,"file":"route-autoimport-plugin.cjs","sources":["../../../src/core/route-autoimport-plugin.ts"],"sourcesContent":["import { generateFromAst, logDiff, parseAst } from '@tanstack/router-utils'\nimport babel from '@babel/core'\nimport * as template from '@babel/template'\nimport { getConfig } from './config'\nimport { debug } from './utils'\nimport type { Config } from './config'\nimport type { UnpluginFactory } from 'unplugin'\n\n/**\n * This plugin adds imports for createFileRoute and createLazyFileRoute to the file route.\n */\nexport const unpluginRouteAutoImportFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}) => {\n let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n return {\n name: 'tanstack-router:autoimport',\n enforce: 'pre',\n\n transform: {\n filter: {\n // this is necessary for webpack / rspack to avoid matching .html files\n id: /\\.(m|c)?(j|t)sx?$/,\n code: /createFileRoute\\(|createLazyFileRoute\\(/,\n },\n handler(code, id) {\n if (!globalThis.TSR_ROUTES_BY_ID_MAP?.has(id)) {\n return null\n }\n let routeType: 'createFileRoute' | 'createLazyFileRoute'\n if (code.includes('createFileRoute(')) {\n routeType = 'createFileRoute'\n } else if (code.includes('createLazyFileRoute(')) {\n routeType = 'createLazyFileRoute'\n } else {\n return null\n }\n\n const routerImportPath = `@tanstack/${userConfig.target}-router`\n\n const ast = parseAst({ code })\n\n let isCreateRouteFunctionImported = false as boolean\n\n babel.traverse(ast, {\n Program: {\n enter(programPath) {\n programPath.traverse({\n ImportDeclaration(path) {\n const importedSpecifiers = path.node.specifiers.map(\n (specifier) => specifier.local.name,\n )\n if (\n importedSpecifiers.includes(routeType) &&\n path.node.source.value === routerImportPath\n ) {\n isCreateRouteFunctionImported = true\n }\n },\n })\n },\n },\n })\n\n if (!isCreateRouteFunctionImported) {\n if (debug) console.info('Adding autoimports to route ', id)\n\n const autoImportStatement = template.statement(\n `import { ${routeType} } from '${routerImportPath}'`,\n )()\n ast.program.body.unshift(autoImportStatement)\n\n const result = generateFromAst(ast, {\n sourceMaps: true,\n filename: id,\n sourceFileName: id,\n })\n if (debug) {\n logDiff(code, result.code)\n console.log('Output:\\n', result.code + '\\n\\n')\n }\n return result\n }\n\n return null\n },\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n userConfig = getConfig(options, ROOT)\n },\n },\n\n rspack() {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n },\n\n webpack() {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n },\n }\n}\n"],"names":["parseAst","debug","template","generateFromAst","logDiff","config","getConfig"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAWO,MAAM,iCAET,CAAC,UAAU,OAAO;AACpB,MAAI,OAAe,QAAQ,IAAA;AAC3B,MAAI,aAAa;AAEjB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IAET,WAAW;AAAA,MACT,QAAQ;AAAA;AAAA,QAEN,IAAI;AAAA,QACJ,MAAM;AAAA,MAAA;AAAA,MAER,QAAQ,MAAM,IAAI;AAChB,YAAI,CAAC,WAAW,sBAAsB,IAAI,EAAE,GAAG;AAC7C,iBAAO;AAAA,QACT;AACA,YAAI;AACJ,YAAI,KAAK,SAAS,kBAAkB,GAAG;AACrC,sBAAY;AAAA,QACd,WAAW,KAAK,SAAS,sBAAsB,GAAG;AAChD,sBAAY;AAAA,QACd,OAAO;AACL,iBAAO;AAAA,QACT;AAEA,cAAM,mBAAmB,aAAa,WAAW,MAAM;AAEvD,cAAM,MAAMA,YAAAA,SAAS,EAAE,MAAM;AAE7B,YAAI,gCAAgC;AAEpC,cAAM,SAAS,KAAK;AAAA,UAClB,SAAS;AAAA,YACP,MAAM,aAAa;AACjB,0BAAY,SAAS;AAAA,gBACnB,kBAAkB,MAAM;AACtB,wBAAM,qBAAqB,KAAK,KAAK,WAAW;AAAA,oBAC9C,CAAC,cAAc,UAAU,MAAM;AAAA,kBAAA;AAEjC,sBACE,mBAAmB,SAAS,SAAS,KACrC,KAAK,KAAK,OAAO,UAAU,kBAC3B;AACA,oDAAgC;AAAA,kBAClC;AAAA,gBACF;AAAA,cAAA,CACD;AAAA,YACH;AAAA,UAAA;AAAA,QACF,CACD;AAED,YAAI,CAAC,+BAA+B;AAClC,cAAIC,MAAAA,MAAO,SAAQ,KAAK,gCAAgC,EAAE;AAE1D,gBAAM,sBAAsBC,oBAAS;AAAA,YACnC,YAAY,SAAS,YAAY,gBAAgB;AAAA,UAAA,EACnD;AACA,cAAI,QAAQ,KAAK,QAAQ,mBAAmB;AAE5C,gBAAM,SAASC,YAAAA,gBAAgB,KAAK;AAAA,YAClC,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,gBAAgB;AAAA,UAAA,CACjB;AACD,cAAIF,aAAO;AACTG,gCAAQ,MAAM,OAAO,IAAI;AACzB,oBAAQ,IAAI,aAAa,OAAO,OAAO,MAAM;AAAA,UAC/C;AACA,iBAAO;AAAA,QACT;AAEA,eAAO;AAAA,MACT;AAAA,IAAA;AAAA,IAGF,MAAM;AAAA,MACJ,eAAeC,UAAQ;AACrB,eAAOA,SAAO;AACd,qBAAaC,OAAAA,UAAU,SAAS,IAAI;AAAA,MACtC;AAAA,IAAA;AAAA,IAGF,SAAS;AACP,aAAO,QAAQ,IAAA;AACf,mBAAaA,OAAAA,UAAU,SAAS,IAAI;AAAA,IACtC;AAAA,IAEA,UAAU;AACR,aAAO,QAAQ,IAAA;AACf,mBAAaA,OAAAA,UAAU,SAAS,IAAI;AAAA,IACtC;AAAA,EAAA;AAEJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-hmr-statement.cjs","sources":["../../../src/core/route-hmr-statement.ts"],"sourcesContent":["import * as template from '@babel/template'\n\nexport const routeHmrStatement = template.statement(\n `\nif (import.meta.hot) {\n import.meta.hot.accept((newModule) => {\n if (newModule && newModule.Route && typeof newModule.Route.clone === 'function') {\n newModule.Route.clone(Route)\n }\n })\n}\n`,\n)()\n"],"names":["template"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEO,MAAM,oBAAoBA,oBAAS;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASF,
|
|
1
|
+
{"version":3,"file":"route-hmr-statement.cjs","sources":["../../../src/core/route-hmr-statement.ts"],"sourcesContent":["import * as template from '@babel/template'\n\nexport const routeHmrStatement = template.statement(\n `\nif (import.meta.hot) {\n import.meta.hot.accept((newModule) => {\n if (newModule && newModule.Route && typeof newModule.Route.clone === 'function') {\n newModule.Route.clone(Route)\n }\n })\n}\n`,\n)()\n"],"names":["template"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEO,MAAM,oBAAoBA,oBAAS;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASF,EAAA;;"}
|
|
@@ -7,9 +7,6 @@ const compilers = require("./code-splitter/compilers.cjs");
|
|
|
7
7
|
const constants = require("./constants.cjs");
|
|
8
8
|
const pathIds = require("./code-splitter/path-ids.cjs");
|
|
9
9
|
const utils = require("./utils.cjs");
|
|
10
|
-
function capitalizeFirst(str) {
|
|
11
|
-
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
12
|
-
}
|
|
13
10
|
const bannedBeforeExternalPlugins = [
|
|
14
11
|
{
|
|
15
12
|
identifier: "@react-refresh",
|
|
@@ -19,11 +16,11 @@ const bannedBeforeExternalPlugins = [
|
|
|
19
16
|
}
|
|
20
17
|
];
|
|
21
18
|
class FoundPluginInBeforeCode extends Error {
|
|
22
|
-
constructor(externalPlugin,
|
|
23
|
-
super(`We detected that the '${externalPlugin.pkg}' was passed before '@tanstack/router-plugin'. Please make sure that '@tanstack/router-plugin' is passed before '${externalPlugin.pkg}' and try again:
|
|
19
|
+
constructor(externalPlugin, pluginFramework) {
|
|
20
|
+
super(`We detected that the '${externalPlugin.pkg}' was passed before '@tanstack/router-plugin/${pluginFramework}'. Please make sure that '@tanstack/router-plugin' is passed before '${externalPlugin.pkg}' and try again:
|
|
24
21
|
e.g.
|
|
25
22
|
plugins: [
|
|
26
|
-
|
|
23
|
+
tanstackRouter(), // Place this before ${externalPlugin.usage}
|
|
27
24
|
${externalPlugin.usage},
|
|
28
25
|
]
|
|
29
26
|
`);
|
|
@@ -35,14 +32,12 @@ const unpluginRouterCodeSplitterFactory = (options = {}, { framework }) => {
|
|
|
35
32
|
let userConfig = options;
|
|
36
33
|
const isProduction = process.env.NODE_ENV === "production";
|
|
37
34
|
const getGlobalCodeSplitGroupings = () => {
|
|
38
|
-
|
|
39
|
-
return ((_a = userConfig.codeSplittingOptions) == null ? void 0 : _a.defaultBehavior) || constants.defaultCodeSplitGroupings;
|
|
35
|
+
return userConfig.codeSplittingOptions?.defaultBehavior || constants.defaultCodeSplitGroupings;
|
|
40
36
|
};
|
|
41
37
|
const getShouldSplitFn = () => {
|
|
42
|
-
|
|
43
|
-
return (_a = userConfig.codeSplittingOptions) == null ? void 0 : _a.splitBehavior;
|
|
38
|
+
return userConfig.codeSplittingOptions?.splitBehavior;
|
|
44
39
|
};
|
|
45
|
-
const handleCompilingReferenceFile = (code, id) => {
|
|
40
|
+
const handleCompilingReferenceFile = (code, id, generatorNodeInfo) => {
|
|
46
41
|
if (utils.debug) console.info("Compiling Route: ", id);
|
|
47
42
|
const fromCode = compilers.detectCodeSplitGroupingsFromRoute({
|
|
48
43
|
code
|
|
@@ -58,8 +53,8 @@ ${message}`
|
|
|
58
53
|
}
|
|
59
54
|
}
|
|
60
55
|
const userShouldSplitFn = getShouldSplitFn();
|
|
61
|
-
const pluginSplitBehavior = userShouldSplitFn
|
|
62
|
-
routeId:
|
|
56
|
+
const pluginSplitBehavior = userShouldSplitFn?.({
|
|
57
|
+
routeId: generatorNodeInfo.routePath
|
|
63
58
|
});
|
|
64
59
|
if (pluginSplitBehavior) {
|
|
65
60
|
const res = config.splitGroupingsSchema.safeParse(pluginSplitBehavior);
|
|
@@ -74,11 +69,12 @@ ${message}`
|
|
|
74
69
|
const splitGroupings = fromCode.groupings || pluginSplitBehavior || getGlobalCodeSplitGroupings();
|
|
75
70
|
const compiledReferenceRoute = compilers.compileCodeSplitReferenceRoute({
|
|
76
71
|
code,
|
|
77
|
-
runtimeEnv: isProduction ? "prod" : "dev",
|
|
78
72
|
codeSplitGroupings: splitGroupings,
|
|
79
73
|
targetFramework: userConfig.target,
|
|
80
74
|
filename: id,
|
|
81
|
-
id
|
|
75
|
+
id,
|
|
76
|
+
deleteNodes: new Set(userConfig.codeSplittingOptions?.deleteNodes),
|
|
77
|
+
addHmr: (options.codeSplittingOptions?.addHmr ?? true) && !isProduction
|
|
82
78
|
});
|
|
83
79
|
if (utils.debug) {
|
|
84
80
|
routerUtils.logDiff(code, compiledReferenceRoute.code);
|
|
@@ -111,63 +107,87 @@ ${message}`
|
|
|
111
107
|
}
|
|
112
108
|
return result;
|
|
113
109
|
};
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
110
|
+
const includedCode = [
|
|
111
|
+
"createFileRoute(",
|
|
112
|
+
"createRootRoute(",
|
|
113
|
+
"createRootRouteWithContext("
|
|
114
|
+
];
|
|
115
|
+
return [
|
|
116
|
+
{
|
|
117
|
+
name: "tanstack-router:code-splitter:compile-reference-file",
|
|
118
|
+
enforce: "pre",
|
|
119
|
+
transform: {
|
|
120
|
+
filter: {
|
|
121
|
+
id: {
|
|
122
|
+
exclude: constants.tsrSplit,
|
|
123
|
+
// this is necessary for webpack / rspack to avoid matching .html files
|
|
124
|
+
include: /\.(m|c)?(j|t)sx?$/
|
|
125
|
+
},
|
|
126
|
+
code: {
|
|
127
|
+
include: includedCode
|
|
130
128
|
}
|
|
131
|
-
|
|
132
|
-
|
|
129
|
+
},
|
|
130
|
+
handler(code, id) {
|
|
131
|
+
const generatorFileInfo = globalThis.TSR_ROUTES_BY_ID_MAP?.get(id);
|
|
132
|
+
if (generatorFileInfo && includedCode.some((included) => code.includes(included))) {
|
|
133
|
+
for (const externalPlugin of bannedBeforeExternalPlugins) {
|
|
134
|
+
if (!externalPlugin.frameworks.includes(framework)) {
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
if (code.includes(externalPlugin.identifier)) {
|
|
138
|
+
throw new FoundPluginInBeforeCode(externalPlugin, framework);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return handleCompilingReferenceFile(code, id, generatorFileInfo);
|
|
133
142
|
}
|
|
143
|
+
return null;
|
|
134
144
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
145
|
+
},
|
|
146
|
+
vite: {
|
|
147
|
+
configResolved(config$1) {
|
|
148
|
+
ROOT = config$1.root;
|
|
149
|
+
userConfig = config.getConfig(options, ROOT);
|
|
150
|
+
},
|
|
151
|
+
applyToEnvironment(environment) {
|
|
152
|
+
if (userConfig.plugin?.vite?.environmentName) {
|
|
153
|
+
return userConfig.plugin.vite.environmentName === environment.name;
|
|
154
|
+
}
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
rspack() {
|
|
159
|
+
ROOT = process.cwd();
|
|
160
|
+
userConfig = config.getConfig(options, ROOT);
|
|
161
|
+
},
|
|
162
|
+
webpack(compiler) {
|
|
163
|
+
ROOT = process.cwd();
|
|
151
164
|
userConfig = config.getConfig(options, ROOT);
|
|
165
|
+
if (compiler.options.mode === "production") {
|
|
166
|
+
compiler.hooks.done.tap(PLUGIN_NAME, () => {
|
|
167
|
+
console.info("✅ " + PLUGIN_NAME + ": code-splitting done!");
|
|
168
|
+
setTimeout(() => {
|
|
169
|
+
process.exit(0);
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
}
|
|
152
173
|
}
|
|
153
174
|
},
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
});
|
|
175
|
+
{
|
|
176
|
+
name: "tanstack-router:code-splitter:compile-virtual-file",
|
|
177
|
+
enforce: "pre",
|
|
178
|
+
transform: {
|
|
179
|
+
filter: {
|
|
180
|
+
id: /tsr-split/
|
|
181
|
+
},
|
|
182
|
+
handler(code, id) {
|
|
183
|
+
const url = node_url.pathToFileURL(id);
|
|
184
|
+
url.searchParams.delete("v");
|
|
185
|
+
id = node_url.fileURLToPath(url).replace(/\\/g, "/");
|
|
186
|
+
return handleCompilingVirtualFile(code, id);
|
|
187
|
+
}
|
|
168
188
|
}
|
|
169
189
|
}
|
|
170
|
-
|
|
190
|
+
];
|
|
171
191
|
};
|
|
172
192
|
exports.unpluginRouterCodeSplitterFactory = unpluginRouterCodeSplitterFactory;
|
|
173
193
|
//# sourceMappingURL=router-code-splitter-plugin.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-code-splitter-plugin.cjs","sources":["../../../src/core/router-code-splitter-plugin.ts"],"sourcesContent":["/**\n * It is important to familiarize yourself with how the code-splitting works in this plugin.\n * https://github.com/TanStack/router/pull/3355\n */\n\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { logDiff } from '@tanstack/router-utils'\nimport { getConfig, splitGroupingsSchema } from './config'\nimport {\n compileCodeSplitReferenceRoute,\n compileCodeSplitVirtualRoute,\n detectCodeSplitGroupingsFromRoute,\n} from './code-splitter/compilers'\nimport {\n defaultCodeSplitGroupings,\n splitRouteIdentNodes,\n tsrSplit,\n} from './constants'\nimport { decodeIdentifier } from './code-splitter/path-ids'\nimport { debug, fileIsInRoutesDirectory } from './utils'\nimport type { CodeSplitGroupings, SplitRouteIdentNodes } from './constants'\n\nimport type { Config } from './config'\nimport type {\n UnpluginContextMeta,\n UnpluginFactory,\n TransformResult as UnpluginTransformResult,\n} from 'unplugin'\n\nfunction capitalizeFirst(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\ntype BannedBeforeExternalPlugin = {\n identifier: string\n pkg: string\n usage: string\n frameworks: Array<UnpluginContextMeta['framework']>\n}\n\nconst bannedBeforeExternalPlugins: Array<BannedBeforeExternalPlugin> = [\n {\n identifier: '@react-refresh',\n pkg: '@vitejs/plugin-react',\n usage: 'viteReact()',\n frameworks: ['vite'],\n },\n]\n\nclass FoundPluginInBeforeCode extends Error {\n constructor(externalPlugin: BannedBeforeExternalPlugin, framework: string) {\n super(`We detected that the '${externalPlugin.pkg}' was passed before '@tanstack/router-plugin'. Please make sure that '@tanstack/router-plugin' is passed before '${externalPlugin.pkg}' and try again: \ne.g.\nplugins: [\n TanStackRouter${capitalizeFirst(framework)}(), // Place this before ${externalPlugin.usage}\n ${externalPlugin.usage},\n]\n`)\n }\n}\n\nconst PLUGIN_NAME = 'unplugin:router-code-splitter'\n\nexport const unpluginRouterCodeSplitterFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, { framework }) => {\n let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n const isProduction = process.env.NODE_ENV === 'production'\n\n const getGlobalCodeSplitGroupings = () => {\n return (\n userConfig.codeSplittingOptions?.defaultBehavior ||\n defaultCodeSplitGroupings\n )\n }\n const getShouldSplitFn = () => {\n return userConfig.codeSplittingOptions?.splitBehavior\n }\n\n const handleCompilingReferenceFile = (\n code: string,\n id: string,\n ): UnpluginTransformResult => {\n if (debug) console.info('Compiling Route: ', id)\n\n const fromCode = detectCodeSplitGroupingsFromRoute({\n code,\n })\n\n if (fromCode.groupings) {\n const res = splitGroupingsSchema.safeParse(fromCode.groupings)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const userShouldSplitFn = getShouldSplitFn()\n\n const pluginSplitBehavior = userShouldSplitFn?.({\n routeId: fromCode.routeId,\n }) as CodeSplitGroupings | undefined\n\n if (pluginSplitBehavior) {\n const res = splitGroupingsSchema.safeParse(pluginSplitBehavior)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings returned when using \\`splitBehavior\\` for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const splitGroupings: CodeSplitGroupings =\n fromCode.groupings || pluginSplitBehavior || getGlobalCodeSplitGroupings()\n\n const compiledReferenceRoute = compileCodeSplitReferenceRoute({\n code,\n runtimeEnv: isProduction ? 'prod' : 'dev',\n codeSplitGroupings: splitGroupings,\n targetFramework: userConfig.target,\n filename: id,\n id,\n })\n\n if (debug) {\n logDiff(code, compiledReferenceRoute.code)\n console.log('Output:\\n', compiledReferenceRoute.code + '\\n\\n')\n }\n\n return compiledReferenceRoute\n }\n\n const handleCompilingVirtualFile = (\n code: string,\n id: string,\n ): UnpluginTransformResult => {\n if (debug) console.info('Splitting Route: ', id)\n\n const [_, ...pathnameParts] = id.split('?')\n\n const searchParams = new URLSearchParams(pathnameParts.join('?'))\n const splitValue = searchParams.get(tsrSplit)\n\n if (!splitValue) {\n throw new Error(\n `The split value for the virtual route \"${id}\" was not found.`,\n )\n }\n\n const rawGrouping = decodeIdentifier(splitValue)\n const grouping = [...new Set(rawGrouping)].filter((p) =>\n splitRouteIdentNodes.includes(p as any),\n ) as Array<SplitRouteIdentNodes>\n\n const result = compileCodeSplitVirtualRoute({\n code,\n filename: id,\n splitTargets: grouping,\n })\n\n if (debug) {\n logDiff(code, result.code)\n console.log('Output:\\n', result.code + '\\n\\n')\n }\n\n return result\n }\n\n return {\n name: 'router-code-splitter-plugin',\n enforce: 'pre',\n\n transform(code, id) {\n if (!userConfig.autoCodeSplitting) {\n return null\n }\n\n const url = pathToFileURL(id)\n url.searchParams.delete('v')\n id = fileURLToPath(url).replace(/\\\\/g, '/')\n\n if (id.includes(tsrSplit)) {\n return handleCompilingVirtualFile(code, id)\n } else if (\n fileIsInRoutesDirectory(id, userConfig.routesDirectory) &&\n (code.includes('createRoute(') || code.includes('createFileRoute('))\n ) {\n for (const externalPlugin of bannedBeforeExternalPlugins) {\n if (!externalPlugin.frameworks.includes(framework)) {\n continue\n }\n\n if (code.includes(externalPlugin.identifier)) {\n throw new FoundPluginInBeforeCode(externalPlugin, framework)\n }\n }\n\n return handleCompilingReferenceFile(code, id)\n }\n\n return null\n },\n\n transformInclude(id) {\n if (!userConfig.autoCodeSplitting) {\n return undefined\n }\n\n if (\n fileIsInRoutesDirectory(id, userConfig.routesDirectory) ||\n id.includes(tsrSplit)\n ) {\n return true\n }\n return false\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n\n userConfig = getConfig(options, ROOT)\n },\n },\n\n rspack(_compiler) {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n },\n\n webpack(compiler) {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n\n if (\n userConfig.autoCodeSplitting &&\n compiler.options.mode === 'production'\n ) {\n compiler.hooks.done.tap(PLUGIN_NAME, () => {\n console.info('✅ ' + PLUGIN_NAME + ': code-splitting done!')\n setTimeout(() => {\n process.exit(0)\n })\n })\n }\n },\n }\n}\n"],"names":["defaultCodeSplitGroupings","debug","detectCodeSplitGroupingsFromRoute","splitGroupingsSchema","compileCodeSplitReferenceRoute","logDiff","tsrSplit","decodeIdentifier","splitRouteIdentNodes","compileCodeSplitVirtualRoute","pathToFileURL","fileURLToPath","fileIsInRoutesDirectory","config","getConfig"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router-code-splitter-plugin.cjs","sources":["../../../src/core/router-code-splitter-plugin.ts"],"sourcesContent":["/**\n * It is important to familiarize yourself with how the code-splitting works in this plugin.\n * https://github.com/TanStack/router/pull/3355\n */\n\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { logDiff } from '@tanstack/router-utils'\nimport { getConfig, splitGroupingsSchema } from './config'\nimport {\n compileCodeSplitReferenceRoute,\n compileCodeSplitVirtualRoute,\n detectCodeSplitGroupingsFromRoute,\n} from './code-splitter/compilers'\nimport {\n defaultCodeSplitGroupings,\n splitRouteIdentNodes,\n tsrSplit,\n} from './constants'\nimport { decodeIdentifier } from './code-splitter/path-ids'\nimport { debug } from './utils'\nimport type { CodeSplitGroupings, SplitRouteIdentNodes } from './constants'\nimport type { GetRoutesByFileMapResultValue } from '@tanstack/router-generator'\nimport type { Config } from './config'\nimport type {\n UnpluginContextMeta,\n UnpluginFactory,\n TransformResult as UnpluginTransformResult,\n} from 'unplugin'\n\ntype BannedBeforeExternalPlugin = {\n identifier: string\n pkg: string\n usage: string\n frameworks: Array<UnpluginContextMeta['framework']>\n}\n\nconst bannedBeforeExternalPlugins: Array<BannedBeforeExternalPlugin> = [\n {\n identifier: '@react-refresh',\n pkg: '@vitejs/plugin-react',\n usage: 'viteReact()',\n frameworks: ['vite'],\n },\n]\n\nclass FoundPluginInBeforeCode extends Error {\n constructor(\n externalPlugin: BannedBeforeExternalPlugin,\n pluginFramework: string,\n ) {\n super(`We detected that the '${externalPlugin.pkg}' was passed before '@tanstack/router-plugin/${pluginFramework}'. Please make sure that '@tanstack/router-plugin' is passed before '${externalPlugin.pkg}' and try again: \ne.g.\nplugins: [\n tanstackRouter(), // Place this before ${externalPlugin.usage}\n ${externalPlugin.usage},\n]\n`)\n }\n}\n\nconst PLUGIN_NAME = 'unplugin:router-code-splitter'\n\nexport const unpluginRouterCodeSplitterFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, { framework }) => {\n let ROOT: string = process.cwd()\n let userConfig = options as Config\n\n const isProduction = process.env.NODE_ENV === 'production'\n\n const getGlobalCodeSplitGroupings = () => {\n return (\n userConfig.codeSplittingOptions?.defaultBehavior ||\n defaultCodeSplitGroupings\n )\n }\n const getShouldSplitFn = () => {\n return userConfig.codeSplittingOptions?.splitBehavior\n }\n\n const handleCompilingReferenceFile = (\n code: string,\n id: string,\n generatorNodeInfo: GetRoutesByFileMapResultValue,\n ): UnpluginTransformResult => {\n if (debug) console.info('Compiling Route: ', id)\n\n const fromCode = detectCodeSplitGroupingsFromRoute({\n code,\n })\n\n if (fromCode.groupings) {\n const res = splitGroupingsSchema.safeParse(fromCode.groupings)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const userShouldSplitFn = getShouldSplitFn()\n\n const pluginSplitBehavior = userShouldSplitFn?.({\n routeId: generatorNodeInfo.routePath,\n }) as CodeSplitGroupings | undefined\n\n if (pluginSplitBehavior) {\n const res = splitGroupingsSchema.safeParse(pluginSplitBehavior)\n if (!res.success) {\n const message = res.error.errors.map((e) => e.message).join('. ')\n throw new Error(\n `The groupings returned when using \\`splitBehavior\\` for the route \"${id}\" are invalid.\\n${message}`,\n )\n }\n }\n\n const splitGroupings: CodeSplitGroupings =\n fromCode.groupings || pluginSplitBehavior || getGlobalCodeSplitGroupings()\n\n const compiledReferenceRoute = compileCodeSplitReferenceRoute({\n code,\n codeSplitGroupings: splitGroupings,\n targetFramework: userConfig.target,\n filename: id,\n id,\n deleteNodes: new Set(userConfig.codeSplittingOptions?.deleteNodes),\n addHmr: (options.codeSplittingOptions?.addHmr ?? true) && !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 const handleCompilingVirtualFile = (\n code: string,\n id: string,\n ): UnpluginTransformResult => {\n if (debug) console.info('Splitting Route: ', id)\n\n const [_, ...pathnameParts] = id.split('?')\n\n const searchParams = new URLSearchParams(pathnameParts.join('?'))\n const splitValue = searchParams.get(tsrSplit)\n\n if (!splitValue) {\n throw new Error(\n `The split value for the virtual route \"${id}\" was not found.`,\n )\n }\n\n const rawGrouping = decodeIdentifier(splitValue)\n const grouping = [...new Set(rawGrouping)].filter((p) =>\n splitRouteIdentNodes.includes(p as any),\n ) as Array<SplitRouteIdentNodes>\n\n const result = compileCodeSplitVirtualRoute({\n code,\n filename: id,\n splitTargets: grouping,\n })\n\n if (debug) {\n logDiff(code, result.code)\n console.log('Output:\\n', result.code + '\\n\\n')\n }\n\n return result\n }\n\n const includedCode = [\n 'createFileRoute(',\n 'createRootRoute(',\n 'createRootRouteWithContext(',\n ]\n return [\n {\n name: 'tanstack-router:code-splitter:compile-reference-file',\n enforce: 'pre',\n\n transform: {\n filter: {\n id: {\n exclude: tsrSplit,\n // this is necessary for webpack / rspack to avoid matching .html files\n include: /\\.(m|c)?(j|t)sx?$/,\n },\n code: {\n include: includedCode,\n },\n },\n handler(code, id) {\n const generatorFileInfo = globalThis.TSR_ROUTES_BY_ID_MAP?.get(id)\n if (\n generatorFileInfo &&\n includedCode.some((included) => code.includes(included))\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, generatorFileInfo)\n }\n\n return null\n },\n },\n\n vite: {\n configResolved(config) {\n ROOT = config.root\n userConfig = getConfig(options, ROOT)\n },\n applyToEnvironment(environment) {\n if (userConfig.plugin?.vite?.environmentName) {\n return userConfig.plugin.vite.environmentName === environment.name\n }\n return true\n },\n },\n\n rspack() {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n },\n\n webpack(compiler) {\n ROOT = process.cwd()\n userConfig = getConfig(options, ROOT)\n\n if (compiler.options.mode === 'production') {\n compiler.hooks.done.tap(PLUGIN_NAME, () => {\n console.info('✅ ' + PLUGIN_NAME + ': code-splitting done!')\n setTimeout(() => {\n process.exit(0)\n })\n })\n }\n },\n },\n {\n name: 'tanstack-router:code-splitter:compile-virtual-file',\n enforce: 'pre',\n\n transform: {\n filter: {\n id: /tsr-split/,\n },\n handler(code, id) {\n const url = pathToFileURL(id)\n url.searchParams.delete('v')\n id = fileURLToPath(url).replace(/\\\\/g, '/')\n return handleCompilingVirtualFile(code, id)\n },\n },\n },\n ]\n}\n"],"names":["defaultCodeSplitGroupings","debug","detectCodeSplitGroupingsFromRoute","splitGroupingsSchema","compileCodeSplitReferenceRoute","logDiff","tsrSplit","decodeIdentifier","splitRouteIdentNodes","compileCodeSplitVirtualRoute","config","getConfig","pathToFileURL","fileURLToPath"],"mappings":"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"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const routerGenerator = require("@tanstack/router-generator");
|
|
3
4
|
const routerGeneratorPlugin = require("./router-generator-plugin.cjs");
|
|
4
5
|
const routerCodeSplitterPlugin = require("./router-code-splitter-plugin.cjs");
|
|
5
6
|
const routerHmrPlugin = require("./router-hmr-plugin.cjs");
|
|
6
7
|
const routeAutoimportPlugin = require("./route-autoimport-plugin.cjs");
|
|
7
8
|
const unpluginRouterComposedFactory = (options = {}, meta) => {
|
|
9
|
+
const ROOT = process.cwd();
|
|
10
|
+
const userConfig = routerGenerator.getConfig(options, ROOT);
|
|
8
11
|
const getPlugin = (pluginFactory) => {
|
|
9
12
|
const plugin = pluginFactory(options, meta);
|
|
10
13
|
if (!Array.isArray(plugin)) {
|
|
@@ -12,12 +15,18 @@ const unpluginRouterComposedFactory = (options = {}, meta) => {
|
|
|
12
15
|
}
|
|
13
16
|
return plugin;
|
|
14
17
|
};
|
|
15
|
-
const routerGenerator = getPlugin(routerGeneratorPlugin.unpluginRouterGeneratorFactory);
|
|
18
|
+
const routerGenerator$1 = getPlugin(routerGeneratorPlugin.unpluginRouterGeneratorFactory);
|
|
16
19
|
const routerCodeSplitter = getPlugin(routerCodeSplitterPlugin.unpluginRouterCodeSplitterFactory);
|
|
17
20
|
const routeAutoImport = getPlugin(routeAutoimportPlugin.unpluginRouteAutoImportFactory);
|
|
18
|
-
const result = [...routerGenerator
|
|
21
|
+
const result = [...routerGenerator$1];
|
|
22
|
+
if (userConfig.autoCodeSplitting) {
|
|
23
|
+
result.push(...routerCodeSplitter);
|
|
24
|
+
}
|
|
25
|
+
if (userConfig.verboseFileRoutes === false) {
|
|
26
|
+
result.push(...routeAutoImport);
|
|
27
|
+
}
|
|
19
28
|
const isProduction = process.env.NODE_ENV === "production";
|
|
20
|
-
if (!isProduction && !
|
|
29
|
+
if (!isProduction && !userConfig.autoCodeSplitting) {
|
|
21
30
|
const routerHmr = getPlugin(routerHmrPlugin.unpluginRouterHmrFactory);
|
|
22
31
|
result.push(...routerHmr);
|
|
23
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-composed-plugin.cjs","sources":["../../../src/core/router-composed-plugin.ts"],"sourcesContent":["import { unpluginRouterGeneratorFactory } from './router-generator-plugin'\nimport { unpluginRouterCodeSplitterFactory } from './router-code-splitter-plugin'\nimport { unpluginRouterHmrFactory } from './router-hmr-plugin'\nimport { unpluginRouteAutoImportFactory } from './route-autoimport-plugin'\nimport type { Config } from './config'\nimport type { UnpluginFactory } from 'unplugin'\n\nexport const unpluginRouterComposedFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, meta) => {\n const getPlugin = (pluginFactory: UnpluginFactory<Partial<Config>>) => {\n const plugin = pluginFactory(options, meta)\n if (!Array.isArray(plugin)) {\n return [plugin]\n }\n return plugin\n }\n\n const routerGenerator = getPlugin(unpluginRouterGeneratorFactory)\n const routerCodeSplitter = getPlugin(unpluginRouterCodeSplitterFactory)\n const routeAutoImport = getPlugin(unpluginRouteAutoImportFactory)\n\n const result = [...routerGenerator
|
|
1
|
+
{"version":3,"file":"router-composed-plugin.cjs","sources":["../../../src/core/router-composed-plugin.ts"],"sourcesContent":["import { getConfig } from '@tanstack/router-generator'\nimport { unpluginRouterGeneratorFactory } from './router-generator-plugin'\nimport { unpluginRouterCodeSplitterFactory } from './router-code-splitter-plugin'\nimport { unpluginRouterHmrFactory } from './router-hmr-plugin'\nimport { unpluginRouteAutoImportFactory } from './route-autoimport-plugin'\nimport type { Config } from './config'\nimport type { UnpluginFactory } from 'unplugin'\n\nexport const unpluginRouterComposedFactory: UnpluginFactory<\n Partial<Config> | undefined\n> = (options = {}, meta) => {\n const ROOT: string = process.cwd()\n const userConfig = getConfig(options, ROOT)\n\n const getPlugin = (pluginFactory: UnpluginFactory<Partial<Config>>) => {\n const plugin = pluginFactory(options, meta)\n if (!Array.isArray(plugin)) {\n return [plugin]\n }\n return plugin\n }\n\n const routerGenerator = getPlugin(unpluginRouterGeneratorFactory)\n const routerCodeSplitter = getPlugin(unpluginRouterCodeSplitterFactory)\n const routeAutoImport = getPlugin(unpluginRouteAutoImportFactory)\n\n const result = [...routerGenerator]\n if (userConfig.autoCodeSplitting) {\n result.push(...routerCodeSplitter)\n }\n if (userConfig.verboseFileRoutes === false) {\n result.push(...routeAutoImport)\n }\n\n const isProduction = process.env.NODE_ENV === 'production'\n\n if (!isProduction && !userConfig.autoCodeSplitting) {\n const routerHmr = getPlugin(unpluginRouterHmrFactory)\n result.push(...routerHmr)\n }\n return result\n}\n"],"names":["getConfig","routerGenerator","unpluginRouterGeneratorFactory","unpluginRouterCodeSplitterFactory","unpluginRouteAutoImportFactory","unpluginRouterHmrFactory"],"mappings":";;;;;;;AAQO,MAAM,gCAET,CAAC,UAAU,CAAA,GAAI,SAAS;AAC1B,QAAM,OAAe,QAAQ,IAAA;AAC7B,QAAM,aAAaA,gBAAAA,UAAU,SAAS,IAAI;AAE1C,QAAM,YAAY,CAAC,kBAAoD;AACrE,UAAM,SAAS,cAAc,SAAS,IAAI;AAC1C,QAAI,CAAC,MAAM,QAAQ,MAAM,GAAG;AAC1B,aAAO,CAAC,MAAM;AAAA,IAChB;AACA,WAAO;AAAA,EACT;AAEA,QAAMC,oBAAkB,UAAUC,oDAA8B;AAChE,QAAM,qBAAqB,UAAUC,0DAAiC;AACtE,QAAM,kBAAkB,UAAUC,oDAA8B;AAEhE,QAAM,SAAS,CAAC,GAAGH,iBAAe;AAClC,MAAI,WAAW,mBAAmB;AAChC,WAAO,KAAK,GAAG,kBAAkB;AAAA,EACnC;AACA,MAAI,WAAW,sBAAsB,OAAO;AAC1C,WAAO,KAAK,GAAG,eAAe;AAAA,EAChC;AAEA,QAAM,eAAe,QAAQ,IAAI,aAAa;AAE9C,MAAI,CAAC,gBAAgB,CAAC,WAAW,mBAAmB;AAClD,UAAM,YAAY,UAAUI,wCAAwB;AACpD,WAAO,KAAK,GAAG,SAAS;AAAA,EAC1B;AACA,SAAO;AACT;;"}
|