@tanstack/router-plugin 1.167.31 → 1.167.33

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.
Files changed (79) hide show
  1. package/dist/cjs/context.cjs +3 -0
  2. package/dist/cjs/context.d.cts +2 -0
  3. package/dist/cjs/core/code-splitter/compilers.cjs.map +1 -1
  4. package/dist/cjs/core/code-splitter/compilers.d.cts +1 -0
  5. package/dist/cjs/core/router-code-splitter-plugin.cjs +12 -3
  6. package/dist/cjs/core/router-code-splitter-plugin.cjs.map +1 -1
  7. package/dist/cjs/core/router-code-splitter-plugin.d.cts +2 -0
  8. package/dist/cjs/core/router-composed-plugin.cjs +7 -6
  9. package/dist/cjs/core/router-composed-plugin.cjs.map +1 -1
  10. package/dist/cjs/core/router-generator-plugin.cjs +7 -2
  11. package/dist/cjs/core/router-generator-plugin.cjs.map +1 -1
  12. package/dist/cjs/core/router-generator-plugin.d.cts +2 -0
  13. package/dist/cjs/core/router-hmr-plugin.cjs +13 -7
  14. package/dist/cjs/core/router-hmr-plugin.cjs.map +1 -1
  15. package/dist/cjs/core/router-hmr-plugin.d.cts +2 -0
  16. package/dist/cjs/core/router-plugin-context.cjs +8 -0
  17. package/dist/cjs/core/router-plugin-context.cjs.map +1 -0
  18. package/dist/cjs/core/router-plugin-context.d.cts +5 -0
  19. package/dist/cjs/esbuild.cjs +10 -2
  20. package/dist/cjs/esbuild.cjs.map +1 -1
  21. package/dist/cjs/esbuild.d.cts +5 -95
  22. package/dist/cjs/index.cjs +2 -0
  23. package/dist/cjs/index.d.cts +2 -0
  24. package/dist/cjs/rspack.cjs +10 -2
  25. package/dist/cjs/rspack.cjs.map +1 -1
  26. package/dist/cjs/rspack.d.cts +5 -49
  27. package/dist/cjs/vite.cjs +11 -2
  28. package/dist/cjs/vite.cjs.map +1 -1
  29. package/dist/cjs/vite.d.cts +6 -96
  30. package/dist/cjs/webpack.cjs +10 -2
  31. package/dist/cjs/webpack.cjs.map +1 -1
  32. package/dist/cjs/webpack.d.cts +4 -49
  33. package/dist/esm/context.d.ts +2 -0
  34. package/dist/esm/context.js +2 -0
  35. package/dist/esm/core/code-splitter/compilers.d.ts +1 -0
  36. package/dist/esm/core/code-splitter/compilers.js.map +1 -1
  37. package/dist/esm/core/router-code-splitter-plugin.d.ts +2 -0
  38. package/dist/esm/core/router-code-splitter-plugin.js +12 -4
  39. package/dist/esm/core/router-code-splitter-plugin.js.map +1 -1
  40. package/dist/esm/core/router-composed-plugin.js +10 -9
  41. package/dist/esm/core/router-composed-plugin.js.map +1 -1
  42. package/dist/esm/core/router-generator-plugin.d.ts +2 -0
  43. package/dist/esm/core/router-generator-plugin.js +7 -3
  44. package/dist/esm/core/router-generator-plugin.js.map +1 -1
  45. package/dist/esm/core/router-hmr-plugin.d.ts +2 -0
  46. package/dist/esm/core/router-hmr-plugin.js +13 -7
  47. package/dist/esm/core/router-hmr-plugin.js.map +1 -1
  48. package/dist/esm/core/router-plugin-context.d.ts +5 -0
  49. package/dist/esm/core/router-plugin-context.js +8 -0
  50. package/dist/esm/core/router-plugin-context.js.map +1 -0
  51. package/dist/esm/esbuild.d.ts +5 -95
  52. package/dist/esm/esbuild.js +12 -4
  53. package/dist/esm/esbuild.js.map +1 -1
  54. package/dist/esm/index.d.ts +2 -0
  55. package/dist/esm/index.js +2 -1
  56. package/dist/esm/rspack.d.ts +5 -49
  57. package/dist/esm/rspack.js +12 -4
  58. package/dist/esm/rspack.js.map +1 -1
  59. package/dist/esm/vite.d.ts +6 -96
  60. package/dist/esm/vite.js +14 -6
  61. package/dist/esm/vite.js.map +1 -1
  62. package/dist/esm/webpack.d.ts +4 -49
  63. package/dist/esm/webpack.js +12 -4
  64. package/dist/esm/webpack.js.map +1 -1
  65. package/package.json +13 -7
  66. package/src/context.ts +2 -0
  67. package/src/core/code-splitter/compilers.ts +1 -0
  68. package/src/core/router-code-splitter-plugin.ts +15 -4
  69. package/src/core/router-composed-plugin.ts +16 -11
  70. package/src/core/router-generator-plugin.ts +13 -4
  71. package/src/core/router-hmr-plugin.ts +22 -7
  72. package/src/core/router-plugin-context.ts +11 -0
  73. package/src/esbuild.ts +27 -9
  74. package/src/index.ts +2 -0
  75. package/src/rspack.ts +30 -12
  76. package/src/vite.ts +29 -9
  77. package/src/webpack.ts +27 -12
  78. package/bin/intent.js +0 -25
  79. package/src/global.d.ts +0 -7
@@ -4,8 +4,10 @@ import { getReferenceRouteCompilerPlugins } from './code-splitter/plugins/framew
4
4
  import { createRouteHmrStatement } from './hmr'
5
5
  import { debug, normalizePath } from './utils'
6
6
  import { getConfig } from './config'
7
+ import { createRouterPluginContext } from './router-plugin-context'
7
8
  import type { UnpluginFactory } from 'unplugin'
8
9
  import type { Config } from './config'
10
+ import type { RouterPluginContext } from './router-plugin-context'
9
11
 
10
12
  /**
11
13
  * This plugin adds HMR support for file routes.
@@ -18,11 +20,18 @@ const includeCode = [
18
20
  'createRootRoute(',
19
21
  'createRootRouteWithContext(',
20
22
  ]
21
- export const unpluginRouterHmrFactory: UnpluginFactory<
22
- Partial<Config> | undefined
23
- > = (options = {}) => {
23
+
24
+ export function createRouterHmrPlugin(
25
+ options: Partial<Config | (() => Config)> | undefined = {},
26
+ routerPluginContext: RouterPluginContext,
27
+ ): ReturnType<UnpluginFactory<Partial<Config> | undefined>> {
24
28
  let ROOT: string = process.cwd()
25
- let userConfig = options as Config
29
+
30
+ const resolveUserConfig = () => {
31
+ return getConfig(typeof options === 'function' ? options() : options, ROOT)
32
+ }
33
+
34
+ let userConfig = resolveUserConfig()
26
35
 
27
36
  return {
28
37
  name: 'tanstack-router:hmr',
@@ -37,7 +46,7 @@ export const unpluginRouterHmrFactory: UnpluginFactory<
37
46
  },
38
47
  handler(code, id) {
39
48
  const normalizedId = normalizePath(id)
40
- const routeEntry = globalThis.TSR_ROUTES_BY_ID_MAP?.get(normalizedId)
49
+ const routeEntry = routerPluginContext.routesByFile.get(normalizedId)
41
50
  if (!routeEntry) {
42
51
  return null
43
52
  }
@@ -74,7 +83,7 @@ export const unpluginRouterHmrFactory: UnpluginFactory<
74
83
  }
75
84
  }
76
85
 
77
- const ast = parseAst({ code })
86
+ const ast = parseAst({ code, filename: normalizedId })
78
87
  ast.program.body.push(
79
88
  ...createRouteHmrStatement([], {
80
89
  hmrStyle,
@@ -97,7 +106,7 @@ export const unpluginRouterHmrFactory: UnpluginFactory<
97
106
  vite: {
98
107
  configResolved(config) {
99
108
  ROOT = config.root
100
- userConfig = getConfig(options, ROOT)
109
+ userConfig = resolveUserConfig()
101
110
  },
102
111
  applyToEnvironment(environment) {
103
112
  if (userConfig.plugin?.vite?.environmentName) {
@@ -108,3 +117,9 @@ export const unpluginRouterHmrFactory: UnpluginFactory<
108
117
  },
109
118
  }
110
119
  }
120
+
121
+ export const unpluginRouterHmrFactory: UnpluginFactory<
122
+ Partial<Config> | undefined
123
+ > = (options = {}) => {
124
+ return createRouterHmrPlugin(options, createRouterPluginContext())
125
+ }
@@ -0,0 +1,11 @@
1
+ import type { GetRoutesByFileMapResult } from '@tanstack/router-generator'
2
+
3
+ export type RouterPluginContext = {
4
+ routesByFile: GetRoutesByFileMapResult
5
+ }
6
+
7
+ export function createRouterPluginContext(): RouterPluginContext {
8
+ return {
9
+ routesByFile: new Map(),
10
+ }
11
+ }
package/src/esbuild.ts CHANGED
@@ -1,11 +1,17 @@
1
1
  import { createEsbuildPlugin } from 'unplugin'
2
2
 
3
3
  import { configSchema } from './core/config'
4
- import { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin'
5
- import { unpluginRouterGeneratorFactory } from './core/router-generator-plugin'
4
+ import { createRouterCodeSplitterPlugin } from './core/router-code-splitter-plugin'
5
+ import { createRouterGeneratorPlugin } from './core/router-generator-plugin'
6
6
  import { unpluginRouterComposedFactory } from './core/router-composed-plugin'
7
+ import { createRouterPluginContext } from './core/router-plugin-context'
7
8
 
8
9
  import type { CodeSplittingOptions, Config } from './core/config'
10
+ import type { RouterPluginContext } from './core/router-plugin-context'
11
+
12
+ type RouterPluginOptions = Partial<Config | (() => Config)> | undefined
13
+
14
+ const defaultRouterPluginContext = createRouterPluginContext()
9
15
 
10
16
  /**
11
17
  * @example
@@ -16,9 +22,15 @@ import type { CodeSplittingOptions, Config } from './core/config'
16
22
  * }
17
23
  * ```
18
24
  */
19
- const TanStackRouterGeneratorEsbuild = createEsbuildPlugin(
20
- unpluginRouterGeneratorFactory,
21
- )
25
+ const TanStackRouterGeneratorEsbuild = (
26
+ options?: RouterPluginOptions,
27
+ routerPluginContext?: RouterPluginContext,
28
+ ) => {
29
+ const pluginContext = routerPluginContext ?? defaultRouterPluginContext
30
+ return createEsbuildPlugin((pluginOptions: RouterPluginOptions) =>
31
+ createRouterGeneratorPlugin(pluginOptions, pluginContext),
32
+ )(options)
33
+ }
22
34
 
23
35
  /**
24
36
  * @example
@@ -29,9 +41,15 @@ const TanStackRouterGeneratorEsbuild = createEsbuildPlugin(
29
41
  * }
30
42
  * ```
31
43
  */
32
- const TanStackRouterCodeSplitterEsbuild = createEsbuildPlugin(
33
- unpluginRouterCodeSplitterFactory,
34
- )
44
+ const TanStackRouterCodeSplitterEsbuild = (
45
+ options?: RouterPluginOptions,
46
+ routerPluginContext?: RouterPluginContext,
47
+ ) => {
48
+ const pluginContext = routerPluginContext ?? defaultRouterPluginContext
49
+ return createEsbuildPlugin((pluginOptions: RouterPluginOptions) =>
50
+ createRouterCodeSplitterPlugin(pluginOptions, pluginContext),
51
+ )(options)
52
+ }
35
53
 
36
54
  /**
37
55
  * @example
@@ -54,4 +72,4 @@ export {
54
72
  tanstackRouter,
55
73
  }
56
74
 
57
- export type { Config, CodeSplittingOptions }
75
+ export type { Config, CodeSplittingOptions, RouterPluginContext }
package/src/index.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export { configSchema, getConfig } from './core/config'
2
2
  export { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin'
3
3
  export { unpluginRouterGeneratorFactory } from './core/router-generator-plugin'
4
+ export { createRouterPluginContext } from './core/router-plugin-context'
4
5
  export type {
5
6
  Config,
6
7
  ConfigInput,
@@ -9,6 +10,7 @@ export type {
9
10
  DeletableNodes,
10
11
  HmrOptions,
11
12
  } from './core/config'
13
+ export type { RouterPluginContext } from './core/router-plugin-context'
12
14
  export {
13
15
  tsrSplit,
14
16
  splitRouteIdentNodes,
package/src/rspack.ts CHANGED
@@ -1,13 +1,17 @@
1
1
  import { createRspackPlugin } from 'unplugin'
2
2
 
3
3
  import { configSchema } from './core/config'
4
- import { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin'
5
- import { unpluginRouterGeneratorFactory } from './core/router-generator-plugin'
4
+ import { createRouterCodeSplitterPlugin } from './core/router-code-splitter-plugin'
5
+ import { createRouterGeneratorPlugin } from './core/router-generator-plugin'
6
6
  import { unpluginRouterComposedFactory } from './core/router-composed-plugin'
7
+ import { createRouterPluginContext } from './core/router-plugin-context'
7
8
  import type { CodeSplittingOptions, Config } from './core/config'
9
+ import type { RouterPluginContext } from './core/router-plugin-context'
8
10
 
9
11
  type RspackRouterPluginOptions = Partial<Config> | (() => Partial<Config>)
10
12
 
13
+ const defaultRouterPluginContext = createRouterPluginContext()
14
+
11
15
  /**
12
16
  * Rspack uses webpack-compatible `module.hot` / `import.meta.webpackHot` HMR.
13
17
  * Force `plugin.hmr.style = 'webpack'` so the router HMR adapter emits
@@ -50,9 +54,18 @@ function withWebpackHmrStyle(
50
54
  * })
51
55
  * ```
52
56
  */
53
- const TanStackRouterGeneratorRspack = /* #__PURE__ */ createRspackPlugin(
54
- unpluginRouterGeneratorFactory,
55
- )
57
+ const TanStackRouterGeneratorRspack = (
58
+ options?: RspackRouterPluginOptions,
59
+ routerPluginContext?: RouterPluginContext,
60
+ ) => {
61
+ const pluginContext = routerPluginContext ?? defaultRouterPluginContext
62
+ return createRspackPlugin((pluginOptions) =>
63
+ createRouterGeneratorPlugin(
64
+ pluginOptions as Partial<Config | (() => Config)> | undefined,
65
+ pluginContext,
66
+ ),
67
+ )(options)
68
+ }
56
69
 
57
70
  /**
58
71
  * @example
@@ -67,15 +80,20 @@ const TanStackRouterGeneratorRspack = /* #__PURE__ */ createRspackPlugin(
67
80
  * })
68
81
  * ```
69
82
  */
70
- const TanStackRouterCodeSplitterRspack = /* #__PURE__ */ createRspackPlugin(
71
- (options, meta) =>
72
- unpluginRouterCodeSplitterFactory(
83
+ const TanStackRouterCodeSplitterRspack = (
84
+ options?: RspackRouterPluginOptions,
85
+ routerPluginContext?: RouterPluginContext,
86
+ ) => {
87
+ const pluginContext = routerPluginContext ?? defaultRouterPluginContext
88
+ return createRspackPlugin((pluginOptions) =>
89
+ createRouterCodeSplitterPlugin(
73
90
  withWebpackHmrStyle(
74
- options as RspackRouterPluginOptions | undefined,
91
+ pluginOptions as RspackRouterPluginOptions | undefined,
75
92
  ) as Partial<Config | (() => Config)>,
76
- meta,
93
+ pluginContext,
77
94
  ),
78
- )
95
+ )(options)
96
+ }
79
97
 
80
98
  /**
81
99
  * @example
@@ -108,4 +126,4 @@ export {
108
126
  TanStackRouterCodeSplitterRspack,
109
127
  tanstackRouter,
110
128
  }
111
- export type { Config, CodeSplittingOptions }
129
+ export type { Config, CodeSplittingOptions, RouterPluginContext }
package/src/vite.ts CHANGED
@@ -1,10 +1,16 @@
1
1
  import { createVitePlugin } from 'unplugin'
2
2
 
3
- import { configSchema } from './core/config'
4
- import { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin'
5
- import { unpluginRouterGeneratorFactory } from './core/router-generator-plugin'
3
+ import { configSchema, getConfig } from './core/config'
4
+ import { createRouterCodeSplitterPlugin } from './core/router-code-splitter-plugin'
5
+ import { createRouterGeneratorPlugin } from './core/router-generator-plugin'
6
6
  import { unpluginRouterComposedFactory } from './core/router-composed-plugin'
7
- import type { CodeSplittingOptions, Config, getConfig } from './core/config'
7
+ import { createRouterPluginContext } from './core/router-plugin-context'
8
+ import type { CodeSplittingOptions, Config } from './core/config'
9
+ import type { RouterPluginContext } from './core/router-plugin-context'
10
+
11
+ type RouterPluginOptions = Partial<Config | (() => Config)> | undefined
12
+
13
+ const defaultRouterPluginContext = createRouterPluginContext()
8
14
 
9
15
  /**
10
16
  * @example
@@ -15,7 +21,15 @@ import type { CodeSplittingOptions, Config, getConfig } from './core/config'
15
21
  * })
16
22
  * ```
17
23
  */
18
- const tanstackRouterGenerator = createVitePlugin(unpluginRouterGeneratorFactory)
24
+ const tanstackRouterGenerator = (
25
+ options?: RouterPluginOptions,
26
+ routerPluginContext?: RouterPluginContext,
27
+ ) => {
28
+ const pluginContext = routerPluginContext ?? defaultRouterPluginContext
29
+ return createVitePlugin((pluginOptions: RouterPluginOptions) =>
30
+ createRouterGeneratorPlugin(pluginOptions, pluginContext),
31
+ )(options)
32
+ }
19
33
 
20
34
  /**
21
35
  * @example
@@ -26,9 +40,15 @@ const tanstackRouterGenerator = createVitePlugin(unpluginRouterGeneratorFactory)
26
40
  * })
27
41
  * ```
28
42
  */
29
- const tanStackRouterCodeSplitter = createVitePlugin(
30
- unpluginRouterCodeSplitterFactory,
31
- )
43
+ const tanStackRouterCodeSplitter = (
44
+ options?: RouterPluginOptions,
45
+ routerPluginContext?: RouterPluginContext,
46
+ ) => {
47
+ const pluginContext = routerPluginContext ?? defaultRouterPluginContext
48
+ return createVitePlugin((pluginOptions: RouterPluginOptions) =>
49
+ createRouterCodeSplitterPlugin(pluginOptions, pluginContext),
50
+ )(options)
51
+ }
32
52
 
33
53
  /**
34
54
  * @example
@@ -56,4 +76,4 @@ export {
56
76
  tanstackRouter,
57
77
  }
58
78
 
59
- export type { Config, CodeSplittingOptions }
79
+ export type { Config, CodeSplittingOptions, RouterPluginContext }
package/src/webpack.ts CHANGED
@@ -1,10 +1,14 @@
1
1
  import { createWebpackPlugin } from 'unplugin'
2
2
 
3
3
  import { configSchema } from './core/config'
4
- import { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin'
5
- import { unpluginRouterGeneratorFactory } from './core/router-generator-plugin'
4
+ import { createRouterCodeSplitterPlugin } from './core/router-code-splitter-plugin'
5
+ import { createRouterGeneratorPlugin } from './core/router-generator-plugin'
6
6
  import { unpluginRouterComposedFactory } from './core/router-composed-plugin'
7
+ import { createRouterPluginContext } from './core/router-plugin-context'
7
8
  import type { CodeSplittingOptions, Config } from './core/config'
9
+ import type { RouterPluginContext } from './core/router-plugin-context'
10
+
11
+ const defaultRouterPluginContext = createRouterPluginContext()
8
12
 
9
13
  /**
10
14
  * Webpack uses `module.hot` / `import.meta.webpackHot` HMR. Force
@@ -35,9 +39,15 @@ function withWebpackHmrStyle(
35
39
  * }
36
40
  * ```
37
41
  */
38
- const TanStackRouterGeneratorWebpack = /* #__PURE__ */ createWebpackPlugin(
39
- unpluginRouterGeneratorFactory,
40
- )
42
+ const TanStackRouterGeneratorWebpack = (
43
+ options?: Partial<Config>,
44
+ routerPluginContext?: RouterPluginContext,
45
+ ) => {
46
+ const pluginContext = routerPluginContext ?? defaultRouterPluginContext
47
+ return createWebpackPlugin((pluginOptions: Partial<Config> | undefined) =>
48
+ createRouterGeneratorPlugin(pluginOptions, pluginContext),
49
+ )(options)
50
+ }
41
51
 
42
52
  /**
43
53
  * @example
@@ -48,13 +58,18 @@ const TanStackRouterGeneratorWebpack = /* #__PURE__ */ createWebpackPlugin(
48
58
  * }
49
59
  * ```
50
60
  */
51
- const TanStackRouterCodeSplitterWebpack = /* #__PURE__ */ createWebpackPlugin(
52
- (options, meta) =>
53
- unpluginRouterCodeSplitterFactory(
54
- withWebpackHmrStyle(options as Partial<Config> | undefined),
55
- meta,
61
+ const TanStackRouterCodeSplitterWebpack = (
62
+ options?: Partial<Config>,
63
+ routerPluginContext?: RouterPluginContext,
64
+ ) => {
65
+ const pluginContext = routerPluginContext ?? defaultRouterPluginContext
66
+ return createWebpackPlugin((pluginOptions: Partial<Config> | undefined) =>
67
+ createRouterCodeSplitterPlugin(
68
+ withWebpackHmrStyle(pluginOptions),
69
+ pluginContext,
56
70
  ),
57
- )
71
+ )(options)
72
+ }
58
73
 
59
74
  /**
60
75
  * @example
@@ -82,4 +97,4 @@ export {
82
97
  TanStackRouterCodeSplitterWebpack,
83
98
  tanstackRouter,
84
99
  }
85
- export type { Config, CodeSplittingOptions }
100
+ export type { Config, CodeSplittingOptions, RouterPluginContext }
package/bin/intent.js DELETED
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env node
2
- // Auto-generated by @tanstack/intent setup
3
- // Exposes the intent end-user CLI for consumers of this library.
4
- // Commit this file, then add to your package.json:
5
- // "bin": { "intent": "./bin/intent.js" }
6
- try {
7
- await import('@tanstack/intent/intent-library')
8
- } catch (e) {
9
- const isModuleNotFound =
10
- e?.code === 'ERR_MODULE_NOT_FOUND' || e?.code === 'MODULE_NOT_FOUND'
11
- const missingIntentLibrary =
12
- typeof e?.message === 'string' && e.message.includes('@tanstack/intent')
13
-
14
- if (isModuleNotFound && missingIntentLibrary) {
15
- console.error('@tanstack/intent is not installed.')
16
- console.error('')
17
- console.error('Install it as a dev dependency:')
18
- console.error(' npm add -D @tanstack/intent')
19
- console.error('')
20
- console.error('Or run directly:')
21
- console.error(' npx @tanstack/intent@latest list')
22
- process.exit(1)
23
- }
24
- throw e
25
- }
package/src/global.d.ts DELETED
@@ -1,7 +0,0 @@
1
- /* eslint-disable no-var */
2
- import type { GetRoutesByFileMapResult } from '@tanstack/router-generator'
3
-
4
- declare global {
5
- var TSR_ROUTES_BY_ID_MAP: GetRoutesByFileMapResult | undefined
6
- }
7
- export {}