@tanstack/start-plugin-core 1.169.12 → 1.169.14

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 (50) hide show
  1. package/dist/esm/index.d.ts +1 -1
  2. package/dist/esm/rsbuild/index.d.ts +1 -0
  3. package/dist/esm/rsbuild/plugin.js +2 -0
  4. package/dist/esm/rsbuild/plugin.js.map +1 -1
  5. package/dist/esm/rsbuild/schema.d.ts +27 -27
  6. package/dist/esm/rsbuild/start-compiler-host.d.ts +3 -1
  7. package/dist/esm/rsbuild/start-compiler-host.js +6 -2
  8. package/dist/esm/rsbuild/start-compiler-host.js.map +1 -1
  9. package/dist/esm/rsbuild/start-router-plugin.d.ts +0 -2
  10. package/dist/esm/rsbuild/start-router-plugin.js +21 -24
  11. package/dist/esm/rsbuild/start-router-plugin.js.map +1 -1
  12. package/dist/esm/schema.d.ts +51 -51
  13. package/dist/esm/start-compiler/compiler.d.ts +21 -5
  14. package/dist/esm/start-compiler/compiler.js +197 -48
  15. package/dist/esm/start-compiler/compiler.js.map +1 -1
  16. package/dist/esm/start-compiler/config.d.ts +7 -3
  17. package/dist/esm/start-compiler/config.js +19 -7
  18. package/dist/esm/start-compiler/config.js.map +1 -1
  19. package/dist/esm/start-compiler/handleCreateServerFn.js +12 -0
  20. package/dist/esm/start-compiler/handleCreateServerFn.js.map +1 -1
  21. package/dist/esm/start-compiler/host.d.ts +3 -1
  22. package/dist/esm/start-compiler/host.js +5 -3
  23. package/dist/esm/start-compiler/host.js.map +1 -1
  24. package/dist/esm/start-compiler/types.d.ts +4 -13
  25. package/dist/esm/types.d.ts +33 -0
  26. package/dist/esm/vite/index.d.ts +1 -0
  27. package/dist/esm/vite/plugin.js +2 -0
  28. package/dist/esm/vite/plugin.js.map +1 -1
  29. package/dist/esm/vite/schema.d.ts +27 -27
  30. package/dist/esm/vite/start-compiler-plugin/plugin.d.ts +3 -1
  31. package/dist/esm/vite/start-compiler-plugin/plugin.js +6 -2
  32. package/dist/esm/vite/start-compiler-plugin/plugin.js.map +1 -1
  33. package/dist/esm/vite/start-router-plugin/plugin.js +5 -3
  34. package/dist/esm/vite/start-router-plugin/plugin.js.map +1 -1
  35. package/package.json +4 -4
  36. package/src/index.ts +6 -1
  37. package/src/rsbuild/index.ts +5 -0
  38. package/src/rsbuild/plugin.ts +3 -0
  39. package/src/rsbuild/start-compiler-host.ts +22 -3
  40. package/src/rsbuild/start-router-plugin.ts +20 -21
  41. package/src/start-compiler/compiler.ts +389 -70
  42. package/src/start-compiler/config.ts +43 -6
  43. package/src/start-compiler/handleCreateServerFn.ts +29 -0
  44. package/src/start-compiler/host.ts +13 -3
  45. package/src/start-compiler/types.ts +5 -14
  46. package/src/types.ts +44 -0
  47. package/src/vite/index.ts +5 -0
  48. package/src/vite/plugin.ts +3 -0
  49. package/src/vite/start-compiler-plugin/plugin.ts +22 -3
  50. package/src/vite/start-router-plugin/plugin.ts +6 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/start-plugin-core",
3
- "version": "1.169.12",
3
+ "version": "1.169.14",
4
4
  "description": "Modern and scalable routing for React applications",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
@@ -87,11 +87,11 @@
87
87
  "xmlbuilder2": "^4.0.3",
88
88
  "zod": "^3.24.2",
89
89
  "@tanstack/router-core": "1.169.1",
90
+ "@tanstack/router-plugin": "1.167.32",
90
91
  "@tanstack/router-generator": "1.166.39",
91
- "@tanstack/router-plugin": "1.167.31",
92
- "@tanstack/router-utils": "1.161.7",
93
92
  "@tanstack/start-client-core": "1.168.1",
94
- "@tanstack/start-server-core": "1.167.26"
93
+ "@tanstack/start-server-core": "1.167.26",
94
+ "@tanstack/router-utils": "1.161.7"
95
95
  },
96
96
  "devDependencies": {
97
97
  "@rsbuild/core": "^2.0.1",
package/src/index.ts CHANGED
@@ -1,3 +1,8 @@
1
1
  export type { TanStackStartInputConfig } from './schema'
2
- export type { TanStackStartCoreOptions } from './types'
2
+ export type {
3
+ StartCompilerImportTransform,
4
+ StartCompilerTransformCandidate,
5
+ StartCompilerTransformContext,
6
+ TanStackStartCoreOptions,
7
+ } from './types'
3
8
  export { START_ENVIRONMENT_NAMES } from './constants'
@@ -1,4 +1,9 @@
1
1
  export { RSBUILD_ENVIRONMENT_NAMES } from './planning'
2
2
  export type { TanStackStartRsbuildPluginCoreOptions } from './types'
3
3
  export type { TanStackStartRsbuildInputConfig } from './schema'
4
+ export type {
5
+ StartCompilerImportTransform,
6
+ StartCompilerTransformCandidate,
7
+ StartCompilerTransformContext,
8
+ } from '../types'
4
9
  export { tanStackStartRsbuild } from './plugin'
@@ -239,6 +239,9 @@ export function tanStackStartRsbuild(
239
239
  root: () => resolvedStartConfig.root || process.cwd(),
240
240
  providerEnvName: serverFnProviderEnv,
241
241
  generateFunctionId: startPluginOpts.serverFns?.generateFunctionId,
242
+ compilerTransforms: corePluginOpts.compilerTransforms,
243
+ serverFnProviderModuleDirectives:
244
+ corePluginOpts.serverFnProviderModuleDirectives,
242
245
  serverFnsById,
243
246
  onServerFnsByIdChange: () => {
244
247
  updateServerFnResolver?.()
@@ -11,7 +11,10 @@ import {
11
11
  import { cleanId } from '../start-compiler/utils'
12
12
  import { RSBUILD_ENVIRONMENT_NAMES } from './planning'
13
13
  import type { RsbuildPluginAPI, Rspack } from '@rsbuild/core'
14
- import type { CompileStartFrameworkOptions } from '../types'
14
+ import type {
15
+ CompileStartFrameworkOptions,
16
+ StartCompilerImportTransform,
17
+ } from '../types'
15
18
  import type {
16
19
  DevServerFnModuleSpecifierEncoder,
17
20
  GenerateFunctionIdFnOptional,
@@ -36,6 +39,8 @@ export interface StartCompilerHostOptions {
36
39
  root: string | (() => string)
37
40
  providerEnvName: string
38
41
  generateFunctionId?: GenerateFunctionIdFnOptional
42
+ compilerTransforms?: Array<StartCompilerImportTransform> | undefined
43
+ serverFnProviderModuleDirectives?: ReadonlyArray<string> | undefined
39
44
  serverFnsById?: Record<string, ServerFn>
40
45
  onServerFnsByIdChange?: () => void
41
46
  }
@@ -79,11 +84,21 @@ export function registerStartCompilerTransforms(
79
84
  // Pre-compute code filter patterns per environment type
80
85
  const codeFilters: Record<'client' | 'server', Array<RegExp>> = {
81
86
  client: getTransformCodeFilterForEnv('client'),
82
- server: getTransformCodeFilterForEnv('server'),
87
+ server: getTransformCodeFilterForEnv('server', {
88
+ compilerTransforms: opts.compilerTransforms,
89
+ }),
83
90
  }
84
91
 
85
92
  for (const env of environments) {
86
93
  const envCodeFilters = codeFilters[env.type]
94
+ const compilerTransforms =
95
+ env.name === RSBUILD_ENVIRONMENT_NAMES.server
96
+ ? opts.compilerTransforms
97
+ : undefined
98
+ const serverFnProviderModuleDirectives =
99
+ env.name === opts.providerEnvName
100
+ ? opts.serverFnProviderModuleDirectives
101
+ : undefined
87
102
 
88
103
  api.transform(
89
104
  {
@@ -113,6 +128,8 @@ export function registerStartCompilerTransforms(
113
128
  framework: opts.framework,
114
129
  providerEnvName: opts.providerEnvName,
115
130
  generateFunctionId: opts.generateFunctionId,
131
+ compilerTransforms,
132
+ serverFnProviderModuleDirectives,
116
133
  onServerFnsById,
117
134
  getKnownServerFns: () => serverFnsById,
118
135
  encodeModuleSpecifierInDev: isDev
@@ -180,7 +197,9 @@ export function registerStartCompilerTransforms(
180
197
  compilers.set(env.name, compiler)
181
198
  }
182
199
 
183
- const detectedKinds = detectKindsInCode(code, env.type)
200
+ const detectedKinds = detectKindsInCode(code, env.type, {
201
+ compilerTransforms,
202
+ })
184
203
  const result = await compiler.compile({ id, code, detectedKinds })
185
204
 
186
205
  if (!result) {
@@ -1,4 +1,9 @@
1
1
  import path from 'pathe'
2
+ import { createRouterPluginContext } from '@tanstack/router-plugin/context'
3
+ import {
4
+ TanStackRouterCodeSplitterRspack,
5
+ TanStackRouterGeneratorRspack,
6
+ } from '@tanstack/router-plugin/rspack'
2
7
  import { routesManifestPlugin } from '../start-router-plugin/generator-plugins/routes-manifest-plugin'
3
8
  import { prerenderRoutesPlugin } from '../start-router-plugin/generator-plugins/prerender-routes-plugin'
4
9
  import { buildRouteTreeFileFooterFromConfig } from '../start-router-plugin/route-tree-footer'
@@ -14,8 +19,6 @@ import type { TanStackStartRsbuildInputConfig } from './schema'
14
19
  * The router-plugin package exports rspack-compatible unplugin wrappers:
15
20
  * - TanStackRouterGeneratorRspack: file-based route generation
16
21
  * - TanStackRouterCodeSplitterRspack: route code splitting
17
- *
18
- * These are dynamically imported to avoid hard dependency on router-plugin/rspack.
19
22
  */
20
23
  export function registerRouterPlugins(
21
24
  api: RsbuildPluginAPI,
@@ -25,17 +28,17 @@ export function registerRouterPlugins(
25
28
  startPluginOpts: TanStackStartRsbuildInputConfig
26
29
  },
27
30
  ): void {
28
- api.modifyRspackConfig(async (config, utils) => {
31
+ const routerPluginContext = createRouterPluginContext()
32
+
33
+ api.modifyRspackConfig((config, utils) => {
29
34
  const envName = utils.environment.name
30
35
  const { startConfig } = opts.getConfig()
31
36
  const routerConfig = startConfig.router
32
37
 
33
38
  // Generator only runs once — register for the client environment
34
39
  if (envName === RSBUILD_ENVIRONMENT_NAMES.client) {
35
- try {
36
- const { TanStackRouterGeneratorRspack } =
37
- await import('@tanstack/router-plugin/rspack')
38
- const generatorPlugin = TanStackRouterGeneratorRspack({
40
+ const generatorPlugin = TanStackRouterGeneratorRspack(
41
+ {
39
42
  ...routerConfig,
40
43
  target: opts.corePluginOpts.framework,
41
44
  routeTreeFileFooter: () => {
@@ -53,11 +56,10 @@ export function registerRouterPlugins(
53
56
  ? [prerenderRoutesPlugin()]
54
57
  : []),
55
58
  ],
56
- })
57
- utils.appendPlugins(generatorPlugin as any)
58
- } catch {
59
- // router-plugin/rspack not available — skip
60
- }
59
+ },
60
+ routerPluginContext,
61
+ )
62
+ utils.appendPlugins(generatorPlugin as any)
61
63
  }
62
64
 
63
65
  if (
@@ -65,10 +67,8 @@ export function registerRouterPlugins(
65
67
  envName === RSBUILD_ENVIRONMENT_NAMES.server
66
68
  ) {
67
69
  const isClient = envName === RSBUILD_ENVIRONMENT_NAMES.client
68
- try {
69
- const { TanStackRouterCodeSplitterRspack } =
70
- await import('@tanstack/router-plugin/rspack')
71
- const splitterPlugin = TanStackRouterCodeSplitterRspack({
70
+ const splitterPlugin = TanStackRouterCodeSplitterRspack(
71
+ {
72
72
  ...routerConfig,
73
73
  target: opts.corePluginOpts.framework,
74
74
  codeSplittingOptions: {
@@ -76,11 +76,10 @@ export function registerRouterPlugins(
76
76
  deleteNodes: isClient ? ['ssr', 'server', 'headers'] : undefined,
77
77
  addHmr: isClient,
78
78
  },
79
- })
80
- utils.appendPlugins(splitterPlugin as any)
81
- } catch {
82
- // router-plugin/rspack not available — skip
83
- }
79
+ },
80
+ routerPluginContext,
81
+ )
82
+ utils.appendPlugins(splitterPlugin as any)
84
83
  }
85
84
  })
86
85
  }