@tanstack/router-plugin 1.39.4 → 1.39.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/code-splitter.cjs +10 -6
- package/dist/cjs/code-splitter.cjs.map +1 -1
- package/dist/cjs/code-splitter.d.cts +1 -19
- package/dist/cjs/composed.cjs +16 -0
- package/dist/cjs/composed.cjs.map +1 -0
- package/dist/cjs/composed.d.cts +4 -0
- package/dist/cjs/index.cjs +2 -2
- package/dist/cjs/index.d.cts +2 -2
- package/dist/cjs/router-generator.cjs +10 -4
- package/dist/cjs/router-generator.cjs.map +1 -1
- package/dist/cjs/router-generator.d.cts +4 -18
- package/dist/cjs/rspack.cjs +20 -0
- package/dist/cjs/rspack.cjs.map +1 -0
- package/dist/cjs/rspack.d.cts +107 -0
- package/dist/cjs/vite.cjs +11 -9
- package/dist/cjs/vite.cjs.map +1 -1
- package/dist/cjs/vite.d.cts +48 -4
- package/dist/esm/code-splitter.d.ts +1 -19
- package/dist/esm/code-splitter.js +10 -6
- package/dist/esm/code-splitter.js.map +1 -1
- package/dist/esm/composed.d.ts +4 -0
- package/dist/esm/composed.js +16 -0
- package/dist/esm/composed.js.map +1 -0
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +4 -4
- package/dist/esm/router-generator.d.ts +4 -18
- package/dist/esm/router-generator.js +10 -4
- package/dist/esm/router-generator.js.map +1 -1
- package/dist/esm/rspack.d.ts +107 -0
- package/dist/esm/rspack.js +20 -0
- package/dist/esm/rspack.js.map +1 -0
- package/dist/esm/vite.d.ts +48 -4
- package/dist/esm/vite.js +13 -11
- package/dist/esm/vite.js.map +1 -1
- package/package.json +16 -2
- package/src/code-splitter.ts +27 -14
- package/src/composed.ts +30 -0
- package/src/index.ts +2 -2
- package/src/router-generator.ts +15 -8
- package/src/rspack.ts +74 -0
- package/src/vite.ts +40 -11
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { unpluginRouterGeneratorFactory } from "./router-generator.js";
|
|
2
|
+
import { unpluginRouterCodeSplitterFactory } from "./code-splitter.js";
|
|
3
|
+
const unpluginRouterComposedFactory = (options = {}, meta) => {
|
|
4
|
+
const routerGenerator = unpluginRouterGeneratorFactory(options);
|
|
5
|
+
const routerGeneratorOptions = Array.isArray(routerGenerator) ? routerGenerator : [routerGenerator];
|
|
6
|
+
const routerCodeSplitter = unpluginRouterCodeSplitterFactory(options, meta);
|
|
7
|
+
let routerCodeSplitterOptions = Array.isArray(routerCodeSplitter) ? routerCodeSplitter : [routerCodeSplitter];
|
|
8
|
+
if (meta.framework === "rspack") {
|
|
9
|
+
routerCodeSplitterOptions = [];
|
|
10
|
+
}
|
|
11
|
+
return [...routerGeneratorOptions, ...routerCodeSplitterOptions];
|
|
12
|
+
};
|
|
13
|
+
export {
|
|
14
|
+
unpluginRouterComposedFactory
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=composed.js.map
|
|
@@ -0,0 +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 let routerCodeSplitterOptions = Array.isArray(routerCodeSplitter)\n ? routerCodeSplitter\n : [routerCodeSplitter]\n\n // Rspack doesn't support the `resolveId` and `transform` hooks provided by unplugin\n // so we need to disable the code splitter for it\n // If you're using Rspack, and know how to implement the code splitting, please let us know\n // We'd love to support it, but we're not sure how to do it yet\n if (meta.framework === 'rspack') {\n routerCodeSplitterOptions = []\n }\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,MAAI,4BAA4B,MAAM,QAAQ,kBAAkB,IAC5D,qBACA,CAAC,kBAAkB;AAMnB,MAAA,KAAK,cAAc,UAAU;AAC/B,gCAA4B,CAAA;AAAA,EAC9B;AAEA,SAAO,CAAC,GAAG,wBAAwB,GAAG,yBAAyB;AACjE;"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { unpluginRouterCodeSplitterFactory } from './code-splitter.js';
|
|
2
|
+
export { unpluginRouterGeneratorFactory } from './router-generator.js';
|
|
3
3
|
export { configSchema } from './config.js';
|
|
4
4
|
export type { Config } from './config.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { unpluginRouterCodeSplitterFactory } from "./code-splitter.js";
|
|
2
|
+
import { unpluginRouterGeneratorFactory } from "./router-generator.js";
|
|
3
3
|
import { configSchema } from "./config.js";
|
|
4
4
|
export {
|
|
5
5
|
configSchema,
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
unpluginRouterCodeSplitterFactory,
|
|
7
|
+
unpluginRouterGeneratorFactory
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,18 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
quoteStyle: "single" | "double";
|
|
6
|
-
semicolons: boolean;
|
|
7
|
-
disableTypes: boolean;
|
|
8
|
-
addExtensions: boolean;
|
|
9
|
-
disableLogging: boolean;
|
|
10
|
-
routeTreeFileHeader: string[];
|
|
11
|
-
routeTreeFileFooter: string[];
|
|
12
|
-
enableRouteGeneration?: boolean | undefined;
|
|
13
|
-
experimental?: {
|
|
14
|
-
enableCodeSplitting?: boolean | undefined;
|
|
15
|
-
} | undefined;
|
|
16
|
-
routeFilePrefix?: string | undefined;
|
|
17
|
-
routeFileIgnorePattern?: string | undefined;
|
|
18
|
-
}> | undefined, boolean>;
|
|
1
|
+
import { UnpluginFactory } from 'unplugin';
|
|
2
|
+
import { Config } from './config.js';
|
|
3
|
+
|
|
4
|
+
export declare const unpluginRouterGeneratorFactory: UnpluginFactory<Partial<Config> | undefined>;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { normalize, join, resolve, isAbsolute } from "node:path";
|
|
2
|
-
import { createUnplugin } from "unplugin";
|
|
3
2
|
import { generator } from "@tanstack/router-generator";
|
|
4
3
|
import { getConfig } from "./config.js";
|
|
5
4
|
import { CONFIG_FILE_NAME } from "./constants.js";
|
|
@@ -8,7 +7,8 @@ const checkLock = () => lock;
|
|
|
8
7
|
const setLock = (bool) => {
|
|
9
8
|
lock = bool;
|
|
10
9
|
};
|
|
11
|
-
const
|
|
10
|
+
const PLUGIN_NAME = "unplugin:router-generator";
|
|
11
|
+
const unpluginRouterGeneratorFactory = (options = {}) => {
|
|
12
12
|
let ROOT = process.cwd();
|
|
13
13
|
let userConfig = options;
|
|
14
14
|
const generate = async () => {
|
|
@@ -57,11 +57,17 @@ const unpluginFactory = (options = {}) => {
|
|
|
57
57
|
userConfig = await getConfig(options, ROOT);
|
|
58
58
|
await run(generate);
|
|
59
59
|
}
|
|
60
|
+
},
|
|
61
|
+
async rspack(compiler) {
|
|
62
|
+
userConfig = await getConfig(options, ROOT);
|
|
63
|
+
await run(generate);
|
|
64
|
+
compiler.hooks.watchRun.tap(PLUGIN_NAME, async () => {
|
|
65
|
+
await run(generate);
|
|
66
|
+
});
|
|
60
67
|
}
|
|
61
68
|
};
|
|
62
69
|
};
|
|
63
|
-
const unpluginRouterGenerator = /* @__PURE__ */ createUnplugin(unpluginFactory);
|
|
64
70
|
export {
|
|
65
|
-
|
|
71
|
+
unpluginRouterGeneratorFactory
|
|
66
72
|
};
|
|
67
73
|
//# sourceMappingURL=router-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-generator.js","sources":["../../src/router-generator.ts"],"sourcesContent":["import { isAbsolute, join, normalize, resolve } from 'node:path'\nimport {
|
|
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 = isAbsolute(userConfig.routesDirectory)\n ? userConfig.routesDirectory\n : join(ROOT, userConfig.routesDirectory)\n\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 }\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,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;AAEM,UAAA,sBAAsB,WAAW,WAAW,eAAe,IAC7D,WAAW,kBACX,KAAK,MAAM,WAAW,eAAe;AAErC,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,EAAA;AAEJ;"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { configSchema, Config } from './config.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* export default defineConfig({
|
|
7
|
+
* // ...
|
|
8
|
+
* tools: {
|
|
9
|
+
* rspack: {
|
|
10
|
+
* plugins: [TanStackRouterGeneratorRspack()],
|
|
11
|
+
* },
|
|
12
|
+
* },
|
|
13
|
+
* })
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare const TanStackRouterGeneratorRspack: (options?: Partial<{
|
|
17
|
+
routeFileIgnorePrefix: string;
|
|
18
|
+
routesDirectory: string;
|
|
19
|
+
generatedRouteTree: string;
|
|
20
|
+
quoteStyle: "single" | "double";
|
|
21
|
+
semicolons: boolean;
|
|
22
|
+
disableTypes: boolean;
|
|
23
|
+
addExtensions: boolean;
|
|
24
|
+
disableLogging: boolean;
|
|
25
|
+
routeTreeFileHeader: string[];
|
|
26
|
+
routeTreeFileFooter: string[];
|
|
27
|
+
enableRouteGeneration?: boolean | undefined;
|
|
28
|
+
experimental?: {
|
|
29
|
+
enableCodeSplitting?: boolean | undefined;
|
|
30
|
+
} | undefined;
|
|
31
|
+
routeFilePrefix?: string | undefined;
|
|
32
|
+
routeFileIgnorePattern?: string | undefined;
|
|
33
|
+
}> | undefined) => _rspack_core_dist_config_zod.RspackPluginInstance;
|
|
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
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* export default defineConfig({
|
|
47
|
+
* // ...
|
|
48
|
+
* tools: {
|
|
49
|
+
* rspack: {
|
|
50
|
+
* plugins: [unstable_TanStackRouterCodeSplitterRspack()],
|
|
51
|
+
* },
|
|
52
|
+
* },
|
|
53
|
+
* })
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
declare const unstable_TanStackRouterCodeSplitterRspack: (options?: Partial<{
|
|
57
|
+
routeFileIgnorePrefix: string;
|
|
58
|
+
routesDirectory: string;
|
|
59
|
+
generatedRouteTree: string;
|
|
60
|
+
quoteStyle: "single" | "double";
|
|
61
|
+
semicolons: boolean;
|
|
62
|
+
disableTypes: boolean;
|
|
63
|
+
addExtensions: boolean;
|
|
64
|
+
disableLogging: boolean;
|
|
65
|
+
routeTreeFileHeader: string[];
|
|
66
|
+
routeTreeFileFooter: string[];
|
|
67
|
+
enableRouteGeneration?: boolean | undefined;
|
|
68
|
+
experimental?: {
|
|
69
|
+
enableCodeSplitting?: boolean | undefined;
|
|
70
|
+
} | undefined;
|
|
71
|
+
routeFilePrefix?: string | undefined;
|
|
72
|
+
routeFileIgnorePattern?: string | undefined;
|
|
73
|
+
}> | undefined) => _rspack_core_dist_config_zod.RspackPluginInstance;
|
|
74
|
+
/**
|
|
75
|
+
* @example
|
|
76
|
+
* ```ts
|
|
77
|
+
* export default defineConfig({
|
|
78
|
+
* // ...
|
|
79
|
+
* tools: {
|
|
80
|
+
* rspack: {
|
|
81
|
+
* plugins: [TanStackRouterRspack()],
|
|
82
|
+
* },
|
|
83
|
+
* },
|
|
84
|
+
* })
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
declare const TanStackRouterRspack: (options?: Partial<{
|
|
88
|
+
routeFileIgnorePrefix: string;
|
|
89
|
+
routesDirectory: string;
|
|
90
|
+
generatedRouteTree: string;
|
|
91
|
+
quoteStyle: "single" | "double";
|
|
92
|
+
semicolons: boolean;
|
|
93
|
+
disableTypes: boolean;
|
|
94
|
+
addExtensions: boolean;
|
|
95
|
+
disableLogging: boolean;
|
|
96
|
+
routeTreeFileHeader: string[];
|
|
97
|
+
routeTreeFileFooter: string[];
|
|
98
|
+
enableRouteGeneration?: boolean | undefined;
|
|
99
|
+
experimental?: {
|
|
100
|
+
enableCodeSplitting?: boolean | undefined;
|
|
101
|
+
} | undefined;
|
|
102
|
+
routeFilePrefix?: string | undefined;
|
|
103
|
+
routeFileIgnorePattern?: string | undefined;
|
|
104
|
+
}> | undefined) => _rspack_core_dist_config_zod.RspackPluginInstance;
|
|
105
|
+
export default TanStackRouterRspack;
|
|
106
|
+
export { configSchema, TanStackRouterRspack, TanStackRouterGeneratorRspack, unstable_TanStackRouterCodeSplitterRspack, };
|
|
107
|
+
export type { Config };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createRspackPlugin } 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 TanStackRouterGeneratorRspack = /* @__PURE__ */ createRspackPlugin(
|
|
7
|
+
unpluginRouterGeneratorFactory
|
|
8
|
+
);
|
|
9
|
+
const unstable_TanStackRouterCodeSplitterRspack = /* @__PURE__ */ createRspackPlugin(unpluginRouterCodeSplitterFactory);
|
|
10
|
+
const TanStackRouterRspack = /* @__PURE__ */ createRspackPlugin(
|
|
11
|
+
unpluginRouterComposedFactory
|
|
12
|
+
);
|
|
13
|
+
export {
|
|
14
|
+
TanStackRouterGeneratorRspack,
|
|
15
|
+
TanStackRouterRspack,
|
|
16
|
+
configSchema,
|
|
17
|
+
TanStackRouterRspack as default,
|
|
18
|
+
unstable_TanStackRouterCodeSplitterRspack
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=rspack.js.map
|
|
@@ -0,0 +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 * @experimental Do not use this plugin yet\n *\n * Unplugin's Rspack integration doesn't support the `resolveId` and `transform` hooks.\n * The code-splitter won't work with Rspack and will probably break your dev and build.\n *\n * If you're familiar with Rspack and know how to overcome our `resolveId` and `transform`\n * limitations, please let us know.\n * We'd love to support it, but we're not sure how to do it yet 😅.\n *\n * @example\n * ```ts\n * export default defineConfig({\n * // ...\n * tools: {\n * rspack: {\n * plugins: [unstable_TanStackRouterCodeSplitterRspack()],\n * },\n * },\n * })\n * ```\n */\nconst unstable_TanStackRouterCodeSplitterRspack =\n /* #__PURE__ */ createRspackPlugin(unpluginRouterCodeSplitterFactory)\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 unstable_TanStackRouterCodeSplitterRspack,\n}\nexport type { Config }\n"],"names":[],"mappings":";;;;;AAoBA,MAAM,gCAAgD;AAAA,EACpD;AACF;AAwBM,MAAA,+EAC+B,iCAAiC;AAetE,MAAM,uBAAuC;AAAA,EAC3C;AACF;"}
|
package/dist/esm/vite.d.ts
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { configSchema, Config } from './config.js';
|
|
2
|
-
import { VitePlugin } from 'unplugin';
|
|
3
2
|
|
|
3
|
+
/**
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* export default defineConfig({
|
|
7
|
+
* plugins: [TanStackRouterGeneratorVite()],
|
|
8
|
+
* // ...
|
|
9
|
+
* })
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
4
12
|
declare const TanStackRouterGeneratorVite: (options?: Partial<{
|
|
5
13
|
routeFileIgnorePrefix: string;
|
|
6
14
|
routesDirectory: string;
|
|
@@ -18,7 +26,16 @@ declare const TanStackRouterGeneratorVite: (options?: Partial<{
|
|
|
18
26
|
} | undefined;
|
|
19
27
|
routeFilePrefix?: string | undefined;
|
|
20
28
|
routeFileIgnorePattern?: string | undefined;
|
|
21
|
-
}> | undefined) =>
|
|
29
|
+
}> | undefined) => import('vite').Plugin<any> | import('vite').Plugin<any>[];
|
|
30
|
+
/**
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* export default defineConfig({
|
|
34
|
+
* plugins: [TanStackRouterCodeSplitterVite()],
|
|
35
|
+
* // ...
|
|
36
|
+
* })
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
22
39
|
declare const TanStackRouterCodeSplitterVite: (options?: Partial<{
|
|
23
40
|
routeFileIgnorePrefix: string;
|
|
24
41
|
routesDirectory: string;
|
|
@@ -36,7 +53,34 @@ declare const TanStackRouterCodeSplitterVite: (options?: Partial<{
|
|
|
36
53
|
} | undefined;
|
|
37
54
|
routeFilePrefix?: string | undefined;
|
|
38
55
|
routeFileIgnorePattern?: string | undefined;
|
|
39
|
-
}> | undefined) =>
|
|
40
|
-
|
|
56
|
+
}> | undefined) => import('vite').Plugin<any> | import('vite').Plugin<any>[];
|
|
57
|
+
/**
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* export default defineConfig({
|
|
61
|
+
* plugins: [TanStackRouterVite()],
|
|
62
|
+
* // ...
|
|
63
|
+
* })
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
declare const TanStackRouterVite: (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('vite').Plugin<any> | import('vite').Plugin<any>[];
|
|
84
|
+
export default TanStackRouterVite;
|
|
41
85
|
export { configSchema, TanStackRouterGeneratorVite, TanStackRouterCodeSplitterVite, TanStackRouterVite, };
|
|
42
86
|
export type { Config };
|
package/dist/esm/vite.js
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createVitePlugin } from "unplugin";
|
|
2
|
+
import { unpluginRouterCodeSplitterFactory } from "./code-splitter.js";
|
|
2
3
|
import { configSchema } from "./config.js";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
import { unpluginRouterGeneratorFactory } from "./router-generator.js";
|
|
5
|
+
import { unpluginRouterComposedFactory } from "./composed.js";
|
|
6
|
+
const TanStackRouterGeneratorVite = createVitePlugin(
|
|
7
|
+
unpluginRouterGeneratorFactory
|
|
8
|
+
);
|
|
9
|
+
const TanStackRouterCodeSplitterVite = createVitePlugin(
|
|
10
|
+
unpluginRouterCodeSplitterFactory
|
|
11
|
+
);
|
|
12
|
+
const TanStackRouterVite = createVitePlugin(unpluginRouterComposedFactory);
|
|
12
13
|
export {
|
|
13
14
|
TanStackRouterCodeSplitterVite,
|
|
14
15
|
TanStackRouterGeneratorVite,
|
|
15
16
|
TanStackRouterVite,
|
|
16
|
-
configSchema
|
|
17
|
+
configSchema,
|
|
18
|
+
TanStackRouterVite as default
|
|
17
19
|
};
|
|
18
20
|
//# sourceMappingURL=vite.js.map
|
package/dist/esm/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sources":["../../src/vite.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"vite.js","sources":["../../src/vite.ts"],"sourcesContent":["import { createVitePlugin } from 'unplugin'\nimport { unpluginRouterCodeSplitterFactory } from './code-splitter'\nimport { configSchema } from './config'\nimport { unpluginRouterGeneratorFactory } from './router-generator'\nimport { unpluginRouterComposedFactory } from './composed'\n\nimport type { Config } from './config'\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * plugins: [TanStackRouterGeneratorVite()],\n * // ...\n * })\n * ```\n */\nconst TanStackRouterGeneratorVite = createVitePlugin(\n unpluginRouterGeneratorFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * plugins: [TanStackRouterCodeSplitterVite()],\n * // ...\n * })\n * ```\n */\nconst TanStackRouterCodeSplitterVite = createVitePlugin(\n unpluginRouterCodeSplitterFactory,\n)\n\n/**\n * @example\n * ```ts\n * export default defineConfig({\n * plugins: [TanStackRouterVite()],\n * // ...\n * })\n * ```\n */\nconst TanStackRouterVite = createVitePlugin(unpluginRouterComposedFactory)\n\nexport default TanStackRouterVite\nexport {\n configSchema,\n TanStackRouterGeneratorVite,\n TanStackRouterCodeSplitterVite,\n TanStackRouterVite,\n}\nexport type { Config }\n"],"names":[],"mappings":";;;;;AAiBA,MAAM,8BAA8B;AAAA,EAClC;AACF;AAWA,MAAM,iCAAiC;AAAA,EACrC;AACF;AAWM,MAAA,qBAAqB,iBAAiB,6BAA6B;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/router-plugin",
|
|
3
|
-
"version": "1.39.
|
|
3
|
+
"version": "1.39.9",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -36,6 +36,16 @@
|
|
|
36
36
|
"default": "./dist/cjs/vite.cjs"
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
|
+
"./rspack": {
|
|
40
|
+
"import": {
|
|
41
|
+
"types": "./dist/esm/rspack.d.ts",
|
|
42
|
+
"default": "./dist/esm/rspack.js"
|
|
43
|
+
},
|
|
44
|
+
"require": {
|
|
45
|
+
"types": "./dist/cjs/rspack.d.cts",
|
|
46
|
+
"default": "./dist/cjs/rspack.cjs"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
39
49
|
"./package.json": "./package.json"
|
|
40
50
|
},
|
|
41
51
|
"sideEffects": false,
|
|
@@ -56,11 +66,15 @@
|
|
|
56
66
|
"src/**"
|
|
57
67
|
],
|
|
58
68
|
"peerDependencies": {
|
|
59
|
-
"vite": ">=5"
|
|
69
|
+
"vite": ">=5",
|
|
70
|
+
"@rsbuild/core": ">=0.7.9"
|
|
60
71
|
},
|
|
61
72
|
"peerDependenciesMeta": {
|
|
62
73
|
"vite": {
|
|
63
74
|
"optional": true
|
|
75
|
+
},
|
|
76
|
+
"@rsbuild/core": {
|
|
77
|
+
"optional": true
|
|
64
78
|
}
|
|
65
79
|
},
|
|
66
80
|
"dependencies": {
|
package/src/code-splitter.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { isAbsolute, join } from 'node:path'
|
|
2
2
|
import { fileURLToPath, pathToFileURL } from 'node:url'
|
|
3
|
-
import { createUnplugin } from 'unplugin'
|
|
4
3
|
|
|
5
4
|
import { compileAst } from './ast'
|
|
6
5
|
import { compileFile, splitFile } from './compilers'
|
|
@@ -8,7 +7,7 @@ import { getConfig } from './config'
|
|
|
8
7
|
import { splitPrefix } from './constants'
|
|
9
8
|
|
|
10
9
|
import type { Config } from './config'
|
|
11
|
-
import type { UnpluginFactory } from 'unplugin'
|
|
10
|
+
import type { UnpluginContextMeta, UnpluginFactory } from 'unplugin'
|
|
12
11
|
|
|
13
12
|
function capitalizeFirst(str: string): string {
|
|
14
13
|
return str.charAt(0).toUpperCase() + str.slice(1)
|
|
@@ -22,19 +21,24 @@ function fileIsInRoutesDirectory(filePath: string, routesDirectory: string) {
|
|
|
22
21
|
return filePath.startsWith(routesDirectoryPath)
|
|
23
22
|
}
|
|
24
23
|
|
|
25
|
-
|
|
24
|
+
type BannedBeforeExternalPlugin = {
|
|
25
|
+
identifier: string
|
|
26
|
+
pkg: string
|
|
27
|
+
usage: string
|
|
28
|
+
frameworks: Array<UnpluginContextMeta['framework']>
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const bannedBeforeExternalPlugins: Array<BannedBeforeExternalPlugin> = [
|
|
26
32
|
{
|
|
27
33
|
identifier: '@react-refresh',
|
|
28
34
|
pkg: '@vitejs/plugin-react',
|
|
29
35
|
usage: 'viteReact()',
|
|
36
|
+
frameworks: ['vite'],
|
|
30
37
|
},
|
|
31
38
|
]
|
|
32
39
|
|
|
33
40
|
class FoundPluginInBeforeCode extends Error {
|
|
34
|
-
constructor(
|
|
35
|
-
externalPlugin: (typeof bannedBeforeExternalPlugins)[number],
|
|
36
|
-
framework: string,
|
|
37
|
-
) {
|
|
41
|
+
constructor(externalPlugin: BannedBeforeExternalPlugin, framework: string) {
|
|
38
42
|
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:
|
|
39
43
|
e.g.
|
|
40
44
|
plugins: [
|
|
@@ -45,10 +49,11 @@ plugins: [
|
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
const PLUGIN_NAME = 'unplugin:router-code-splitter'
|
|
53
|
+
|
|
54
|
+
export const unpluginRouterCodeSplitterFactory: UnpluginFactory<
|
|
55
|
+
Partial<Config> | undefined
|
|
56
|
+
> = (options = {}, { framework }) => {
|
|
52
57
|
const debug = Boolean(process.env.TSR_VITE_DEBUG)
|
|
53
58
|
|
|
54
59
|
let ROOT: string = process.cwd()
|
|
@@ -117,6 +122,7 @@ export const unpluginFactory: UnpluginFactory<Partial<Config> | undefined> = (
|
|
|
117
122
|
return {
|
|
118
123
|
name: 'router-code-splitter-plugin',
|
|
119
124
|
enforce: 'pre',
|
|
125
|
+
|
|
120
126
|
resolveId(source) {
|
|
121
127
|
if (!userConfig.experimental?.enableCodeSplitting) {
|
|
122
128
|
return null
|
|
@@ -127,6 +133,7 @@ export const unpluginFactory: UnpluginFactory<Partial<Config> | undefined> = (
|
|
|
127
133
|
}
|
|
128
134
|
return null
|
|
129
135
|
},
|
|
136
|
+
|
|
130
137
|
async transform(code, id) {
|
|
131
138
|
if (!userConfig.experimental?.enableCodeSplitting) {
|
|
132
139
|
return null
|
|
@@ -143,6 +150,10 @@ export const unpluginFactory: UnpluginFactory<Partial<Config> | undefined> = (
|
|
|
143
150
|
(code.includes('createRoute(') || code.includes('createFileRoute('))
|
|
144
151
|
) {
|
|
145
152
|
for (const externalPlugin of bannedBeforeExternalPlugins) {
|
|
153
|
+
if (!externalPlugin.frameworks.includes(framework)) {
|
|
154
|
+
continue
|
|
155
|
+
}
|
|
156
|
+
|
|
146
157
|
if (code.includes(externalPlugin.identifier)) {
|
|
147
158
|
throw new FoundPluginInBeforeCode(externalPlugin, framework)
|
|
148
159
|
}
|
|
@@ -153,14 +164,16 @@ export const unpluginFactory: UnpluginFactory<Partial<Config> | undefined> = (
|
|
|
153
164
|
|
|
154
165
|
return null
|
|
155
166
|
},
|
|
167
|
+
|
|
156
168
|
vite: {
|
|
157
169
|
async configResolved(config) {
|
|
158
170
|
ROOT = config.root
|
|
159
171
|
userConfig = await getConfig(options, ROOT)
|
|
160
172
|
},
|
|
161
173
|
},
|
|
174
|
+
|
|
175
|
+
async rspack(compiler) {
|
|
176
|
+
userConfig = await getConfig(options, ROOT)
|
|
177
|
+
},
|
|
162
178
|
}
|
|
163
179
|
}
|
|
164
|
-
|
|
165
|
-
export const unpluginRouterCodeSplitter =
|
|
166
|
-
/* #__PURE__ */ createUnplugin(unpluginFactory)
|
package/src/composed.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { unpluginRouterGeneratorFactory } from './router-generator'
|
|
2
|
+
import { unpluginRouterCodeSplitterFactory } from './code-splitter'
|
|
3
|
+
|
|
4
|
+
import type { Config } from './config'
|
|
5
|
+
import type { UnpluginFactory } from 'unplugin'
|
|
6
|
+
|
|
7
|
+
export const unpluginRouterComposedFactory: UnpluginFactory<
|
|
8
|
+
Partial<Config> | undefined
|
|
9
|
+
> = (options = {}, meta) => {
|
|
10
|
+
const routerGenerator = unpluginRouterGeneratorFactory(options, meta)
|
|
11
|
+
|
|
12
|
+
const routerGeneratorOptions = Array.isArray(routerGenerator)
|
|
13
|
+
? routerGenerator
|
|
14
|
+
: [routerGenerator]
|
|
15
|
+
|
|
16
|
+
const routerCodeSplitter = unpluginRouterCodeSplitterFactory(options, meta)
|
|
17
|
+
let routerCodeSplitterOptions = Array.isArray(routerCodeSplitter)
|
|
18
|
+
? routerCodeSplitter
|
|
19
|
+
: [routerCodeSplitter]
|
|
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
|
+
return [...routerGeneratorOptions, ...routerCodeSplitterOptions]
|
|
30
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { unpluginRouterCodeSplitterFactory } from './code-splitter'
|
|
2
|
+
export { unpluginRouterGeneratorFactory } from './router-generator'
|
|
3
3
|
export { configSchema } from './config'
|
|
4
4
|
export type { Config } from './config'
|
package/src/router-generator.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { isAbsolute, join, normalize, resolve } from 'node:path'
|
|
2
|
-
import { createUnplugin } from 'unplugin'
|
|
3
2
|
import { generator } from '@tanstack/router-generator'
|
|
4
3
|
|
|
5
4
|
import { getConfig } from './config'
|
|
6
5
|
import { CONFIG_FILE_NAME } from './constants'
|
|
7
|
-
import type { Config } from './config'
|
|
8
6
|
import type { UnpluginFactory } from 'unplugin'
|
|
7
|
+
import type { Config } from './config'
|
|
9
8
|
|
|
10
9
|
let lock = false
|
|
11
10
|
const checkLock = () => lock
|
|
@@ -13,9 +12,11 @@ const setLock = (bool: boolean) => {
|
|
|
13
12
|
lock = bool
|
|
14
13
|
}
|
|
15
14
|
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
const PLUGIN_NAME = 'unplugin:router-generator'
|
|
16
|
+
|
|
17
|
+
export const unpluginRouterGeneratorFactory: UnpluginFactory<
|
|
18
|
+
Partial<Config> | undefined
|
|
19
|
+
> = (options = {}) => {
|
|
19
20
|
let ROOT: string = process.cwd()
|
|
20
21
|
let userConfig = options as Config
|
|
21
22
|
|
|
@@ -85,8 +86,14 @@ const unpluginFactory: UnpluginFactory<Partial<Config> | undefined> = (
|
|
|
85
86
|
await run(generate)
|
|
86
87
|
},
|
|
87
88
|
},
|
|
89
|
+
async rspack(compiler) {
|
|
90
|
+
userConfig = await getConfig(options, ROOT)
|
|
91
|
+
|
|
92
|
+
await run(generate)
|
|
93
|
+
|
|
94
|
+
compiler.hooks.watchRun.tap(PLUGIN_NAME, async () => {
|
|
95
|
+
await run(generate)
|
|
96
|
+
})
|
|
97
|
+
},
|
|
88
98
|
}
|
|
89
99
|
}
|
|
90
|
-
|
|
91
|
-
export const unpluginRouterGenerator =
|
|
92
|
-
/* #__PURE__ */ createUnplugin(unpluginFactory)
|