@octanejs/tanstack-start 0.1.0

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 (266) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +52 -0
  3. package/THIRD_PARTY_NOTICES.md +11 -0
  4. package/package.json +149 -0
  5. package/src/client-only.d.ts +1 -0
  6. package/src/client-only.js +0 -0
  7. package/src/client-rpc.d.ts +1 -0
  8. package/src/client-rpc.js +1 -0
  9. package/src/client.d.ts +3 -0
  10. package/src/client.js +2 -0
  11. package/src/default-entry/client.js +12 -0
  12. package/src/default-entry/server.js +13 -0
  13. package/src/default-entry/start.js +1 -0
  14. package/src/default-entry-paths.d.ts +5 -0
  15. package/src/default-entry-paths.js +11 -0
  16. package/src/index.d.ts +11 -0
  17. package/src/index.js +22 -0
  18. package/src/internal/README.md +15 -0
  19. package/src/internal/router-generator/config.d.ts +255 -0
  20. package/src/internal/router-generator/config.js +134 -0
  21. package/src/internal/router-generator/filesystem/physical/getRouteNodes.d.ts +53 -0
  22. package/src/internal/router-generator/filesystem/physical/getRouteNodes.js +335 -0
  23. package/src/internal/router-generator/filesystem/physical/rootPathId.d.ts +1 -0
  24. package/src/internal/router-generator/filesystem/physical/rootPathId.js +4 -0
  25. package/src/internal/router-generator/filesystem/virtual/config.d.ts +3 -0
  26. package/src/internal/router-generator/filesystem/virtual/config.js +36 -0
  27. package/src/internal/router-generator/filesystem/virtual/getRouteNodes.d.ts +31 -0
  28. package/src/internal/router-generator/filesystem/virtual/getRouteNodes.js +272 -0
  29. package/src/internal/router-generator/filesystem/virtual/loadConfigFile.d.ts +1 -0
  30. package/src/internal/router-generator/filesystem/virtual/loadConfigFile.js +10 -0
  31. package/src/internal/router-generator/generator.d.ts +119 -0
  32. package/src/internal/router-generator/generator.js +1080 -0
  33. package/src/internal/router-generator/index.d.ts +40 -0
  34. package/src/internal/router-generator/index.js +49 -0
  35. package/src/internal/router-generator/logger.d.ts +8 -0
  36. package/src/internal/router-generator/logger.js +30 -0
  37. package/src/internal/router-generator/plugin/types.d.ts +37 -0
  38. package/src/internal/router-generator/template.d.ts +38 -0
  39. package/src/internal/router-generator/template.js +220 -0
  40. package/src/internal/router-generator/transform/transform.d.ts +8 -0
  41. package/src/internal/router-generator/transform/transform.js +385 -0
  42. package/src/internal/router-generator/transform/types.d.ts +34 -0
  43. package/src/internal/router-generator/types.d.ts +73 -0
  44. package/src/internal/router-generator/utils.d.ts +270 -0
  45. package/src/internal/router-generator/utils.js +864 -0
  46. package/src/internal/router-generator/validate-route-params.d.ts +13 -0
  47. package/src/internal/router-generator/validate-route-params.js +75 -0
  48. package/src/internal/router-plugin/context.d.ts +2 -0
  49. package/src/internal/router-plugin/context.js +2 -0
  50. package/src/internal/router-plugin/core/code-splitter/compilers.d.ts +69 -0
  51. package/src/internal/router-plugin/core/code-splitter/compilers.js +1042 -0
  52. package/src/internal/router-plugin/core/code-splitter/framework-options.d.ts +11 -0
  53. package/src/internal/router-plugin/core/code-splitter/framework-options.js +41 -0
  54. package/src/internal/router-plugin/core/code-splitter/plugins/framework-plugins.d.ts +12 -0
  55. package/src/internal/router-plugin/core/code-splitter/plugins/framework-plugins.js +35 -0
  56. package/src/internal/router-plugin/core/code-splitter/plugins/octane-hmr-split-route-components.d.ts +5 -0
  57. package/src/internal/router-plugin/core/code-splitter/plugins/octane-hmr-split-route-components.js +106 -0
  58. package/src/internal/router-plugin/core/code-splitter/plugins/octane-split-route-components.d.ts +8 -0
  59. package/src/internal/router-plugin/core/code-splitter/plugins/octane-split-route-components.js +85 -0
  60. package/src/internal/router-plugin/core/code-splitter/plugins/react-refresh-ignored-route-exports.d.ts +2 -0
  61. package/src/internal/router-plugin/core/code-splitter/plugins/react-refresh-ignored-route-exports.js +55 -0
  62. package/src/internal/router-plugin/core/code-splitter/plugins/react-refresh-route-components.d.ts +2 -0
  63. package/src/internal/router-plugin/core/code-splitter/plugins/react-refresh-route-components.js +50 -0
  64. package/src/internal/router-plugin/core/code-splitter/plugins/react-stable-hmr-split-route-components.d.ts +5 -0
  65. package/src/internal/router-plugin/core/code-splitter/plugins/react-stable-hmr-split-route-components.js +54 -0
  66. package/src/internal/router-plugin/core/code-splitter/plugins.d.ts +62 -0
  67. package/src/internal/router-plugin/core/code-splitter/types.d.ts +9 -0
  68. package/src/internal/router-plugin/core/config.d.ts +294 -0
  69. package/src/internal/router-plugin/core/config.js +56 -0
  70. package/src/internal/router-plugin/core/constants.d.ts +12 -0
  71. package/src/internal/router-plugin/core/constants.js +13 -0
  72. package/src/internal/router-plugin/core/framework-plugin-order.d.ts +8 -0
  73. package/src/internal/router-plugin/core/framework-plugin-order.js +78 -0
  74. package/src/internal/router-plugin/core/hmr/handle-route-update.d.ts +1 -0
  75. package/src/internal/router-plugin/core/hmr/handle-route-update.js +126 -0
  76. package/src/internal/router-plugin/core/hmr/index.d.ts +5 -0
  77. package/src/internal/router-plugin/core/hmr/select-adapter.d.ts +17 -0
  78. package/src/internal/router-plugin/core/hmr/select-adapter.js +24 -0
  79. package/src/internal/router-plugin/core/hmr/vite-adapter.d.ts +18 -0
  80. package/src/internal/router-plugin/core/hmr/vite-adapter.js +73 -0
  81. package/src/internal/router-plugin/core/hmr/webpack-adapter.d.ts +22 -0
  82. package/src/internal/router-plugin/core/hmr/webpack-adapter.js +78 -0
  83. package/src/internal/router-plugin/core/router-code-splitter-plugin.d.ts +10 -0
  84. package/src/internal/router-plugin/core/router-code-splitter-plugin.js +244 -0
  85. package/src/internal/router-plugin/core/router-composed-plugin.d.ts +5 -0
  86. package/src/internal/router-plugin/core/router-composed-plugin.js +62 -0
  87. package/src/internal/router-plugin/core/router-generator-plugin.d.ts +10 -0
  88. package/src/internal/router-plugin/core/router-generator-plugin.js +125 -0
  89. package/src/internal/router-plugin/core/router-hmr-plugin.d.ts +13 -0
  90. package/src/internal/router-plugin/core/router-hmr-plugin.js +101 -0
  91. package/src/internal/router-plugin/core/router-plugin-context.d.ts +5 -0
  92. package/src/internal/router-plugin/core/router-plugin-context.js +6 -0
  93. package/src/internal/router-plugin/core/utils.d.ts +17 -0
  94. package/src/internal/router-plugin/core/utils.js +47 -0
  95. package/src/internal/router-plugin/esbuild.d.ts +197 -0
  96. package/src/internal/router-plugin/esbuild.js +58 -0
  97. package/src/internal/router-plugin/index.d.ts +19 -0
  98. package/src/internal/router-plugin/index.js +17 -0
  99. package/src/internal/router-plugin/rspack.d.ts +61 -0
  100. package/src/internal/router-plugin/rspack.js +92 -0
  101. package/src/internal/router-plugin/vite.d.ts +201 -0
  102. package/src/internal/router-plugin/vite.js +62 -0
  103. package/src/internal/router-plugin/webpack.d.ts +50 -0
  104. package/src/internal/router-plugin/webpack.js +77 -0
  105. package/src/internal/start-plugin-core/build-sitemap.d.ts +34 -0
  106. package/src/internal/start-plugin-core/build-sitemap.js +125 -0
  107. package/src/internal/start-plugin-core/config-context.d.ts +30 -0
  108. package/src/internal/start-plugin-core/config-context.js +89 -0
  109. package/src/internal/start-plugin-core/constants.d.ts +20 -0
  110. package/src/internal/start-plugin-core/constants.js +24 -0
  111. package/src/internal/start-plugin-core/debug.d.ts +1 -0
  112. package/src/internal/start-plugin-core/hydrate-when-transform.d.ts +5 -0
  113. package/src/internal/start-plugin-core/hydrate-when-transform.js +661 -0
  114. package/src/internal/start-plugin-core/hydration-constants.d.ts +1 -0
  115. package/src/internal/start-plugin-core/hydration-constants.js +4 -0
  116. package/src/internal/start-plugin-core/import-protection/adapterUtils.d.ts +40 -0
  117. package/src/internal/start-plugin-core/import-protection/adapterUtils.js +42 -0
  118. package/src/internal/start-plugin-core/import-protection/analysis.d.ts +63 -0
  119. package/src/internal/start-plugin-core/import-protection/analysis.js +533 -0
  120. package/src/internal/start-plugin-core/import-protection/constants.d.ts +11 -0
  121. package/src/internal/start-plugin-core/import-protection/constants.js +39 -0
  122. package/src/internal/start-plugin-core/import-protection/defaults.d.ts +19 -0
  123. package/src/internal/start-plugin-core/import-protection/defaults.js +34 -0
  124. package/src/internal/start-plugin-core/import-protection/extensionlessAbsoluteIdResolver.d.ts +22 -0
  125. package/src/internal/start-plugin-core/import-protection/extensionlessAbsoluteIdResolver.js +94 -0
  126. package/src/internal/start-plugin-core/import-protection/matchers.d.ts +18 -0
  127. package/src/internal/start-plugin-core/import-protection/matchers.js +39 -0
  128. package/src/internal/start-plugin-core/import-protection/rewrite.d.ts +29 -0
  129. package/src/internal/start-plugin-core/import-protection/rewrite.js +184 -0
  130. package/src/internal/start-plugin-core/import-protection/sourceLocation.d.ts +170 -0
  131. package/src/internal/start-plugin-core/import-protection/sourceLocation.js +376 -0
  132. package/src/internal/start-plugin-core/import-protection/trace.d.ts +89 -0
  133. package/src/internal/start-plugin-core/import-protection/trace.js +186 -0
  134. package/src/internal/start-plugin-core/import-protection/utils.d.ts +78 -0
  135. package/src/internal/start-plugin-core/import-protection/utils.js +171 -0
  136. package/src/internal/start-plugin-core/import-protection/virtualModules.d.ts +38 -0
  137. package/src/internal/start-plugin-core/import-protection/virtualModules.js +241 -0
  138. package/src/internal/start-plugin-core/index.d.ts +8 -0
  139. package/src/internal/start-plugin-core/index.js +2 -0
  140. package/src/internal/start-plugin-core/planning.d.ts +44 -0
  141. package/src/internal/start-plugin-core/planning.js +98 -0
  142. package/src/internal/start-plugin-core/post-build.d.ts +12 -0
  143. package/src/internal/start-plugin-core/post-build.js +40 -0
  144. package/src/internal/start-plugin-core/prerender.d.ts +17 -0
  145. package/src/internal/start-plugin-core/prerender.js +172 -0
  146. package/src/internal/start-plugin-core/queue.d.ts +37 -0
  147. package/src/internal/start-plugin-core/queue.js +118 -0
  148. package/src/internal/start-plugin-core/resolve-entries.d.ts +10 -0
  149. package/src/internal/start-plugin-core/resolve-entries.js +32 -0
  150. package/src/internal/start-plugin-core/schema.d.ts +1799 -0
  151. package/src/internal/start-plugin-core/schema.js +252 -0
  152. package/src/internal/start-plugin-core/serialization-adapters-module.d.ts +18 -0
  153. package/src/internal/start-plugin-core/serialization-adapters-module.js +37 -0
  154. package/src/internal/start-plugin-core/start-compiler/compiler.d.ts +181 -0
  155. package/src/internal/start-plugin-core/start-compiler/compiler.js +1078 -0
  156. package/src/internal/start-plugin-core/start-compiler/config.d.ts +20 -0
  157. package/src/internal/start-plugin-core/start-compiler/config.js +84 -0
  158. package/src/internal/start-plugin-core/start-compiler/handleClientOnlyJSX.d.ts +24 -0
  159. package/src/internal/start-plugin-core/start-compiler/handleClientOnlyJSX.js +25 -0
  160. package/src/internal/start-plugin-core/start-compiler/handleCreateIsomorphicFn.d.ts +11 -0
  161. package/src/internal/start-plugin-core/start-compiler/handleCreateIsomorphicFn.js +24 -0
  162. package/src/internal/start-plugin-core/start-compiler/handleCreateMiddleware.d.ts +11 -0
  163. package/src/internal/start-plugin-core/start-compiler/handleCreateMiddleware.js +35 -0
  164. package/src/internal/start-plugin-core/start-compiler/handleCreateServerFn.d.ts +22 -0
  165. package/src/internal/start-plugin-core/start-compiler/handleCreateServerFn.js +292 -0
  166. package/src/internal/start-plugin-core/start-compiler/handleEnvOnly.d.ts +14 -0
  167. package/src/internal/start-plugin-core/start-compiler/handleEnvOnly.js +41 -0
  168. package/src/internal/start-plugin-core/start-compiler/host.d.ts +44 -0
  169. package/src/internal/start-plugin-core/start-compiler/host.js +75 -0
  170. package/src/internal/start-plugin-core/start-compiler/server-fn-resolver-module.d.ts +10 -0
  171. package/src/internal/start-plugin-core/start-compiler/server-fn-resolver-module.js +87 -0
  172. package/src/internal/start-plugin-core/start-compiler/types.d.ts +119 -0
  173. package/src/internal/start-plugin-core/start-compiler/utils.d.ts +27 -0
  174. package/src/internal/start-plugin-core/start-compiler/utils.js +36 -0
  175. package/src/internal/start-plugin-core/start-manifest-plugin/inlineCss.d.ts +16 -0
  176. package/src/internal/start-plugin-core/start-manifest-plugin/inlineCss.js +131 -0
  177. package/src/internal/start-plugin-core/start-manifest-plugin/manifestBuilder.d.ts +64 -0
  178. package/src/internal/start-plugin-core/start-manifest-plugin/manifestBuilder.js +441 -0
  179. package/src/internal/start-plugin-core/start-router-plugin/constants.d.ts +1 -0
  180. package/src/internal/start-plugin-core/start-router-plugin/constants.js +4 -0
  181. package/src/internal/start-plugin-core/start-router-plugin/generator-plugins/compose-generator-plugins.d.ts +6 -0
  182. package/src/internal/start-plugin-core/start-router-plugin/generator-plugins/compose-generator-plugins.js +6 -0
  183. package/src/internal/start-plugin-core/start-router-plugin/generator-plugins/prerender-routes-plugin.d.ts +6 -0
  184. package/src/internal/start-plugin-core/start-router-plugin/generator-plugins/prerender-routes-plugin.js +27 -0
  185. package/src/internal/start-plugin-core/start-router-plugin/generator-plugins/routes-manifest-plugin.d.ts +6 -0
  186. package/src/internal/start-plugin-core/start-router-plugin/generator-plugins/routes-manifest-plugin.js +34 -0
  187. package/src/internal/start-plugin-core/start-router-plugin/pruneServerOnlySubtrees.d.ts +11 -0
  188. package/src/internal/start-plugin-core/start-router-plugin/pruneServerOnlySubtrees.js +42 -0
  189. package/src/internal/start-plugin-core/start-router-plugin/route-tree-footer.d.ts +6 -0
  190. package/src/internal/start-plugin-core/start-router-plugin/route-tree-footer.js +59 -0
  191. package/src/internal/start-plugin-core/types.d.ts +135 -0
  192. package/src/internal/start-plugin-core/types.js +4 -0
  193. package/src/internal/start-plugin-core/utils.d.ts +13 -0
  194. package/src/internal/start-plugin-core/utils.js +42 -0
  195. package/src/internal/start-plugin-core/vite/createVirtualModule.d.ts +15 -0
  196. package/src/internal/start-plugin-core/vite/createVirtualModule.js +27 -0
  197. package/src/internal/start-plugin-core/vite/dev-server-plugin/dev-styles.d.ts +26 -0
  198. package/src/internal/start-plugin-core/vite/dev-server-plugin/dev-styles.js +165 -0
  199. package/src/internal/start-plugin-core/vite/dev-server-plugin/plugin.d.ts +11 -0
  200. package/src/internal/start-plugin-core/vite/dev-server-plugin/plugin.js +170 -0
  201. package/src/internal/start-plugin-core/vite/import-protection-plugin/plugin.d.ts +4 -0
  202. package/src/internal/start-plugin-core/vite/import-protection-plugin/plugin.js +1553 -0
  203. package/src/internal/start-plugin-core/vite/import-protection-plugin/types.d.ts +103 -0
  204. package/src/internal/start-plugin-core/vite/import-protection-plugin/virtualModules.d.ts +40 -0
  205. package/src/internal/start-plugin-core/vite/import-protection-plugin/virtualModules.js +68 -0
  206. package/src/internal/start-plugin-core/vite/index.d.ts +13 -0
  207. package/src/internal/start-plugin-core/vite/index.js +4 -0
  208. package/src/internal/start-plugin-core/vite/load-env-plugin/plugin.d.ts +2 -0
  209. package/src/internal/start-plugin-core/vite/load-env-plugin/plugin.js +13 -0
  210. package/src/internal/start-plugin-core/vite/output-directory.d.ts +7 -0
  211. package/src/internal/start-plugin-core/vite/output-directory.js +18 -0
  212. package/src/internal/start-plugin-core/vite/planning.d.ts +112 -0
  213. package/src/internal/start-plugin-core/vite/planning.js +152 -0
  214. package/src/internal/start-plugin-core/vite/plugin.d.ts +7 -0
  215. package/src/internal/start-plugin-core/vite/plugin.js +208 -0
  216. package/src/internal/start-plugin-core/vite/plugins.d.ts +17 -0
  217. package/src/internal/start-plugin-core/vite/plugins.js +72 -0
  218. package/src/internal/start-plugin-core/vite/post-server-build.d.ts +9 -0
  219. package/src/internal/start-plugin-core/vite/post-server-build.js +22 -0
  220. package/src/internal/start-plugin-core/vite/prerender.d.ts +9 -0
  221. package/src/internal/start-plugin-core/vite/prerender.js +52 -0
  222. package/src/internal/start-plugin-core/vite/preview-server-plugin/plugin.d.ts +2 -0
  223. package/src/internal/start-plugin-core/vite/preview-server-plugin/plugin.js +54 -0
  224. package/src/internal/start-plugin-core/vite/schema.d.ts +2423 -0
  225. package/src/internal/start-plugin-core/vite/schema.js +17 -0
  226. package/src/internal/start-plugin-core/vite/serialization-adapters-plugin.d.ts +5 -0
  227. package/src/internal/start-plugin-core/vite/serialization-adapters-plugin.js +63 -0
  228. package/src/internal/start-plugin-core/vite/start-compiler-plugin/hot-update.d.ts +5 -0
  229. package/src/internal/start-plugin-core/vite/start-compiler-plugin/hot-update.js +14 -0
  230. package/src/internal/start-plugin-core/vite/start-compiler-plugin/module-specifier.d.ts +5 -0
  231. package/src/internal/start-plugin-core/vite/start-compiler-plugin/module-specifier.js +25 -0
  232. package/src/internal/start-plugin-core/vite/start-compiler-plugin/plugin.d.ts +29 -0
  233. package/src/internal/start-plugin-core/vite/start-compiler-plugin/plugin.js +380 -0
  234. package/src/internal/start-plugin-core/vite/start-manifest-plugin/normalized-client-build.d.ts +11 -0
  235. package/src/internal/start-plugin-core/vite/start-manifest-plugin/normalized-client-build.js +114 -0
  236. package/src/internal/start-plugin-core/vite/start-manifest-plugin/plugin.d.ts +3 -0
  237. package/src/internal/start-plugin-core/vite/start-manifest-plugin/plugin.js +103 -0
  238. package/src/internal/start-plugin-core/vite/start-router-plugin/plugin.d.ts +9 -0
  239. package/src/internal/start-plugin-core/vite/start-router-plugin/plugin.js +143 -0
  240. package/src/internal/start-plugin-core/vite/types.d.ts +17 -0
  241. package/src/package-names.js +10 -0
  242. package/src/plugin-vite.d.ts +23 -0
  243. package/src/plugin-vite.js +62 -0
  244. package/src/runtime/client/StartClient.d.ts +11 -0
  245. package/src/runtime/client/StartClient.js +16 -0
  246. package/src/runtime/client/hydrateStart.d.ts +4 -0
  247. package/src/runtime/client/hydrateStart.js +30 -0
  248. package/src/runtime/server/StartServer.d.ts +10 -0
  249. package/src/runtime/server/StartServer.js +6 -0
  250. package/src/runtime/server/defaultRenderHandler.d.ts +3 -0
  251. package/src/runtime/server/defaultRenderHandler.js +11 -0
  252. package/src/runtime/server/defaultStreamHandler.d.ts +3 -0
  253. package/src/runtime/server/defaultStreamHandler.js +13 -0
  254. package/src/server-entry.d.ts +11 -0
  255. package/src/server-entry.js +13 -0
  256. package/src/server-only.d.ts +1 -0
  257. package/src/server-only.js +0 -0
  258. package/src/server-rpc.d.ts +1 -0
  259. package/src/server-rpc.js +1 -0
  260. package/src/server.d.ts +6 -0
  261. package/src/server.js +4 -0
  262. package/src/ssr-rpc.d.ts +1 -0
  263. package/src/ssr-rpc.js +1 -0
  264. package/src/use-server-fn.d.ts +3 -0
  265. package/src/use-server-fn.js +18 -0
  266. package/src/validate-options.js +7 -0
@@ -0,0 +1,252 @@
1
+ import path from 'node:path';
2
+ import { z } from 'zod';
3
+ import { configSchema, getConfig } from '#tanstack-start/router-plugin';
4
+ //#region src/schema.ts
5
+ var tsrConfig = configSchema
6
+ .omit({
7
+ autoCodeSplitting: true,
8
+ target: true,
9
+ })
10
+ .partial();
11
+ var patternSchema = z.union([z.string(), z.instanceof(RegExp)]);
12
+ var importProtectionBehaviorSchema = z.enum(['error', 'mock']);
13
+ var importProtectionEnvRulesSchema = z.object({
14
+ specifiers: z.array(patternSchema).optional(),
15
+ files: z.array(patternSchema).optional(),
16
+ excludeFiles: z.array(patternSchema).optional(),
17
+ });
18
+ var importProtectionOptionsSchema = z
19
+ .object({
20
+ enabled: z.boolean().optional(),
21
+ behavior: z
22
+ .union([
23
+ importProtectionBehaviorSchema,
24
+ z.object({
25
+ dev: importProtectionBehaviorSchema.optional(),
26
+ build: importProtectionBehaviorSchema.optional(),
27
+ }),
28
+ ])
29
+ .optional(),
30
+ /**
31
+ * In `behavior: 'mock'`, control whether mocked imports emit a runtime
32
+ * console diagnostic when accessed.
33
+ *
34
+ * - 'error': console.error(new Error(...)) (default)
35
+ * - 'warn': console.warn(new Error(...))
36
+ * - 'off': disable runtime diagnostics
37
+ */
38
+ mockAccess: z.enum(['error', 'warn', 'off']).optional(),
39
+ onViolation: z.custom((value) => typeof value === 'function').optional(),
40
+ include: z.array(patternSchema).optional(),
41
+ exclude: z.array(patternSchema).optional(),
42
+ client: importProtectionEnvRulesSchema.optional(),
43
+ server: importProtectionEnvRulesSchema.optional(),
44
+ ignoreImporters: z.array(patternSchema).optional(),
45
+ maxTraceDepth: z.number().optional(),
46
+ log: z.enum(['once', 'always']).optional(),
47
+ })
48
+ .optional();
49
+ function parseStartConfig(opts, corePluginOpts, root) {
50
+ const rawRouterOptions = (opts ?? {}).router ?? {};
51
+ const options = tanstackStartOptionsSchema.parse(opts);
52
+ const srcDirectory = options.srcDirectory;
53
+ const routesDirectory = path.resolve(
54
+ root,
55
+ srcDirectory,
56
+ rawRouterOptions.routesDirectory ?? 'routes',
57
+ );
58
+ const generatedRouteTree = path.resolve(
59
+ root,
60
+ srcDirectory,
61
+ rawRouterOptions.generatedRouteTree ?? 'routeTree.gen.ts',
62
+ );
63
+ return {
64
+ ...options,
65
+ router: {
66
+ ...options.router,
67
+ ...getConfig(
68
+ {
69
+ ...options.router,
70
+ target: corePluginOpts.framework,
71
+ routesDirectory,
72
+ generatedRouteTree,
73
+ },
74
+ root,
75
+ ),
76
+ target: corePluginOpts.framework,
77
+ },
78
+ };
79
+ }
80
+ var pageSitemapOptionsSchema = z.object({
81
+ exclude: z.boolean().optional(),
82
+ priority: z.number().min(0).max(1).optional(),
83
+ changefreq: z
84
+ .enum(['always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly', 'never'])
85
+ .optional(),
86
+ lastmod: z.union([z.string(), z.date()]).optional(),
87
+ alternateRefs: z
88
+ .array(
89
+ z.object({
90
+ href: z.string(),
91
+ hreflang: z.string(),
92
+ }),
93
+ )
94
+ .optional(),
95
+ images: z
96
+ .array(
97
+ z.object({
98
+ loc: z.string(),
99
+ caption: z.string().optional(),
100
+ title: z.string().optional(),
101
+ }),
102
+ )
103
+ .optional(),
104
+ news: z
105
+ .object({
106
+ publication: z.object({
107
+ name: z.string(),
108
+ language: z.string(),
109
+ }),
110
+ publicationDate: z.union([z.string(), z.date()]),
111
+ title: z.string(),
112
+ })
113
+ .optional(),
114
+ });
115
+ var pageBaseSchema = z.object({
116
+ path: z.string(),
117
+ sitemap: pageSitemapOptionsSchema.optional(),
118
+ fromCrawl: z.boolean().optional(),
119
+ });
120
+ var pagePrerenderOptionsSchema = z.object({
121
+ enabled: z.boolean().optional(),
122
+ outputPath: z.string().optional(),
123
+ autoSubfolderIndex: z.boolean().optional(),
124
+ crawlLinks: z.boolean().optional(),
125
+ retryCount: z.number().optional(),
126
+ retryDelay: z.number().optional(),
127
+ onSuccess: z.custom((value) => typeof value === 'function').optional(),
128
+ headers: z.record(z.string(), z.string()).optional(),
129
+ });
130
+ var spaSchema = z.object({
131
+ enabled: z.boolean().optional().default(true),
132
+ maskPath: z.string().optional().default('/'),
133
+ prerender: pagePrerenderOptionsSchema
134
+ .optional()
135
+ .prefault({})
136
+ .transform((opts) => ({
137
+ outputPath: opts.outputPath ?? '/_shell',
138
+ crawlLinks: false,
139
+ retryCount: 0,
140
+ ...opts,
141
+ enabled: true,
142
+ })),
143
+ });
144
+ var inlineCssSchema = z
145
+ .union([
146
+ z.boolean(),
147
+ z.object({
148
+ /**
149
+ * Inline route CSS into the server-rendered HTML response.
150
+ *
151
+ * @experimental This option is experimental!
152
+ */
153
+ enabled: z.boolean().optional().default(true),
154
+ /**
155
+ * Emit build-time templates that allow `transformAssets` to rewrite
156
+ * `url(...)` references inside inlined CSS at runtime.
157
+ */
158
+ transformAssets: z.boolean().optional().default(false),
159
+ }),
160
+ ])
161
+ .optional()
162
+ .default(false)
163
+ .transform((value) => {
164
+ if (typeof value === 'boolean')
165
+ return {
166
+ enabled: value,
167
+ transformAssets: false,
168
+ };
169
+ return value;
170
+ });
171
+ var pageSchema = pageBaseSchema.extend({ prerender: pagePrerenderOptionsSchema.optional() });
172
+ var tanstackStartOptionsObjectSchema = z.object({
173
+ srcDirectory: z.string().optional().default('src'),
174
+ start: z.object({ entry: z.string().optional() }).optional().prefault({}),
175
+ router: z
176
+ .object({
177
+ entry: z.string().optional(),
178
+ basepath: z.string().optional(),
179
+ })
180
+ .and(tsrConfig.optional().prefault({}))
181
+ .optional()
182
+ .prefault({}),
183
+ client: z
184
+ .object({
185
+ entry: z.string().optional(),
186
+ base: z.string().optional().default('/_build'),
187
+ })
188
+ .optional()
189
+ .prefault({}),
190
+ server: z
191
+ .object({
192
+ entry: z.string().optional(),
193
+ build: z
194
+ .object({
195
+ staticNodeEnv: z.boolean().optional().default(true),
196
+ /**
197
+ * Inline route CSS into the server-rendered HTML response.
198
+ *
199
+ * @experimental This option is experimental!
200
+ */
201
+ inlineCss: inlineCssSchema,
202
+ })
203
+ .optional()
204
+ .prefault({}),
205
+ })
206
+ .optional()
207
+ .prefault({}),
208
+ serverFns: z
209
+ .object({
210
+ base: z.string().optional().default('/_serverFn'),
211
+ disableCsrfMiddlewareWarning: z.boolean().optional().default(false),
212
+ generateFunctionId: z.custom((value) => typeof value === 'function').optional(),
213
+ })
214
+ .optional()
215
+ .prefault({}),
216
+ pages: z.array(pageSchema).optional().default([]),
217
+ sitemap: z
218
+ .object({
219
+ enabled: z.boolean().optional().default(true),
220
+ host: z.string().optional(),
221
+ outputPath: z.string().optional().default('sitemap.xml'),
222
+ })
223
+ .optional(),
224
+ prerender: z
225
+ .object({
226
+ enabled: z.boolean().optional(),
227
+ concurrency: z.number().optional(),
228
+ filter: z.custom((value) => typeof value === 'function').optional(),
229
+ failOnError: z.boolean().optional(),
230
+ autoStaticPathsDiscovery: z.boolean().optional(),
231
+ maxRedirects: z.number().min(0).optional(),
232
+ })
233
+ .and(pagePrerenderOptionsSchema.optional())
234
+ .optional(),
235
+ dev: z
236
+ .object({
237
+ ssrStyles: z
238
+ .object({
239
+ enabled: z.boolean().optional().default(true),
240
+ basepath: z.string().optional(),
241
+ })
242
+ .optional()
243
+ .prefault({}),
244
+ })
245
+ .optional()
246
+ .prefault({}),
247
+ spa: spaSchema.optional(),
248
+ importProtection: importProtectionOptionsSchema,
249
+ });
250
+ var tanstackStartOptionsSchema = tanstackStartOptionsObjectSchema.optional().prefault({});
251
+ //#endregion
252
+ export { parseStartConfig, tanstackStartOptionsObjectSchema };
@@ -0,0 +1,18 @@
1
+ import { SerializationAdapterConfig } from './types.js';
2
+ export declare const EMPTY_SERIALIZATION_ADAPTERS_MODULE =
3
+ 'export const pluginSerializationAdapters = []\nexport const hasPluginAdapters = false';
4
+ interface ResolvedAdapterModule {
5
+ module: string;
6
+ export: string;
7
+ isFactory: boolean;
8
+ index: number;
9
+ }
10
+ export declare function resolveSerializationAdaptersForRuntime(opts: {
11
+ adapters: Array<SerializationAdapterConfig> | undefined;
12
+ runtime: 'client' | 'server';
13
+ }): Array<ResolvedAdapterModule>;
14
+ export declare function generateSerializationAdaptersModule(opts: {
15
+ adapters: Array<SerializationAdapterConfig> | undefined;
16
+ runtime: 'client' | 'server';
17
+ }): string;
18
+ export {};
@@ -0,0 +1,37 @@
1
+ //#region src/serialization-adapters-module.ts
2
+ var EMPTY_SERIALIZATION_ADAPTERS_MODULE = `export const pluginSerializationAdapters = []
3
+ export const hasPluginAdapters = false`;
4
+ function resolveSerializationAdaptersForRuntime(opts) {
5
+ if (!opts.adapters?.length) return [];
6
+ const resolvedAdapters = [];
7
+ for (let i = 0; i < opts.adapters.length; i++) {
8
+ const adapter = opts.adapters[i];
9
+ if ('module' in adapter) {
10
+ resolvedAdapters.push({
11
+ module: adapter.module,
12
+ export: adapter.export,
13
+ isFactory: adapter.isFactory ?? true,
14
+ index: i,
15
+ });
16
+ continue;
17
+ }
18
+ const runtimeAdapter = opts.runtime === 'client' ? adapter.client : adapter.server;
19
+ if (!runtimeAdapter) continue;
20
+ resolvedAdapters.push({
21
+ module: runtimeAdapter.module,
22
+ export: runtimeAdapter.export,
23
+ isFactory: runtimeAdapter.isFactory ?? true,
24
+ index: i,
25
+ });
26
+ }
27
+ return resolvedAdapters;
28
+ }
29
+ function generateSerializationAdaptersModule(opts) {
30
+ const resolvedAdapters = resolveSerializationAdaptersForRuntime(opts);
31
+ if (resolvedAdapters.length === 0) return EMPTY_SERIALIZATION_ADAPTERS_MODULE;
32
+ return `${resolvedAdapters.map((adapter) => `import { ${adapter.export} as adapter${adapter.index} } from '${adapter.module}'`).join('\n')}
33
+ export const pluginSerializationAdapters = [${resolvedAdapters.map((adapter) => (adapter.isFactory ? `...(Array.isArray(adapter${adapter.index}()) ? adapter${adapter.index}() : [adapter${adapter.index}()])` : `adapter${adapter.index}`)).join(', ')}]
34
+ export const hasPluginAdapters = true`;
35
+ }
36
+ //#endregion
37
+ export { generateSerializationAdaptersModule };
@@ -0,0 +1,181 @@
1
+ import { DevServerFnModuleSpecifierEncoder, ServerFn } from './types.js';
2
+ import { ModuleInfoBinding } from '@tanstack/router-utils';
3
+ import {
4
+ CompileStartFrameworkOptions,
5
+ StartCompilerEnvironment,
6
+ StartCompilerImportTransform,
7
+ StartCompilerPlugin,
8
+ StartCompilerTransformResult,
9
+ } from '../types.js';
10
+ type Binding = ModuleInfoBinding & {
11
+ resolvedKind?: Kind;
12
+ };
13
+ type Kind = 'None' | `Root` | `Builder` | LookupKind;
14
+ export type BuiltInLookupKind =
15
+ | 'ServerFn'
16
+ | 'Middleware'
17
+ | 'IsomorphicFn'
18
+ | 'ServerOnlyFn'
19
+ | 'ClientOnlyFn'
20
+ | 'ClientOnlyJSX';
21
+ export type ExternalLookupKind = `External:${string}`;
22
+ export type LookupKind = BuiltInLookupKind | ExternalLookupKind;
23
+ export declare function getExternalLookupKind(
24
+ transform: StartCompilerImportTransform,
25
+ ): ExternalLookupKind;
26
+ export declare function isCompilerTransformEnabledForEnv(
27
+ transform: StartCompilerImportTransform,
28
+ env: StartCompilerEnvironment,
29
+ ): boolean;
30
+ export declare function isStartCompilerPluginEnabledForEnv(
31
+ plugin: StartCompilerPlugin,
32
+ env: StartCompilerEnvironment,
33
+ ): boolean;
34
+ export declare const KindDetectionPatterns: Record<BuiltInLookupKind, RegExp>;
35
+ export declare const LookupKindsPerEnv: Record<'client' | 'server', Set<BuiltInLookupKind>>;
36
+ export declare function getLookupKindsForEnv(
37
+ env: 'client' | 'server',
38
+ opts?: {
39
+ compilerTransforms?: Array<StartCompilerImportTransform> | undefined;
40
+ },
41
+ ): Set<LookupKind>;
42
+ /**
43
+ * Detects which LookupKinds are present in the code using string matching.
44
+ * This is a fast pre-scan before AST parsing to limit the work done during compilation.
45
+ */
46
+ export declare function detectKindsInCode(
47
+ code: string,
48
+ env: 'client' | 'server',
49
+ opts?: {
50
+ compilerTransforms?: Array<StartCompilerImportTransform> | undefined;
51
+ },
52
+ ): Set<LookupKind>;
53
+ export type LookupConfig = {
54
+ libName: string;
55
+ rootExport: string;
56
+ kind: LookupKind | 'Root';
57
+ };
58
+ interface ModuleInfo {
59
+ id: string;
60
+ bindings: Map<string, Binding>;
61
+ exports: Map<string, string>;
62
+ reExportAllSources: Array<string>;
63
+ }
64
+ export declare class StartCompiler {
65
+ private options;
66
+ private moduleCache;
67
+ private initialized;
68
+ private validLookupKinds;
69
+ private externalTransformsByKind;
70
+ private externalLookupSetup;
71
+ private compilerPlugins;
72
+ private externalDirectCallKindsBySource;
73
+ private resolveIdCache;
74
+ private exportResolutionCache;
75
+ private knownRootImports;
76
+ private entryIdToFunctionId;
77
+ private functionIds;
78
+ constructor(options: {
79
+ env: 'client' | 'server';
80
+ envName: string;
81
+ root: string;
82
+ lookupConfigurations: Array<LookupConfig>;
83
+ lookupKinds: Set<LookupKind>;
84
+ loadModule: (id: string) => Promise<void>;
85
+ resolveId: (id: string, importer?: string) => Promise<string | null>;
86
+ /**
87
+ * In 'build' mode, resolution results are cached for performance.
88
+ * In 'dev' mode (default), caching is disabled to avoid invalidation complexity with HMR.
89
+ */
90
+ mode?: 'dev' | 'build';
91
+ /**
92
+ * The framework being used (e.g., 'react', 'solid').
93
+ */
94
+ framework: CompileStartFrameworkOptions;
95
+ /**
96
+ * The Vite environment name for the server function provider.
97
+ */
98
+ providerEnvName: string;
99
+ /**
100
+ * Custom function ID generator (optional, defaults to hash-based).
101
+ */
102
+ generateFunctionId?: (opts: { filename: string; functionName: string }) => string | undefined;
103
+ /**
104
+ * Callback when server functions are discovered.
105
+ * Called after each file is compiled with its new functions.
106
+ */
107
+ onServerFnsById?: (d: Record<string, ServerFn>) => void;
108
+ compilerTransforms?: Array<StartCompilerImportTransform> | undefined;
109
+ compilerPlugins?: Array<StartCompilerPlugin> | undefined;
110
+ serverFnProviderModuleDirectives?: ReadonlyArray<string> | undefined;
111
+ warn?: (message: string) => void;
112
+ /**
113
+ * Returns the currently known server functions from previous builds.
114
+ * Used by server callers to look up canonical extracted filenames.
115
+ */
116
+ getKnownServerFns: () => Record<string, ServerFn>;
117
+ devServerFnModuleSpecifierEncoder?: DevServerFnModuleSpecifierEncoder;
118
+ });
119
+ /**
120
+ * Generates a unique function ID for a server function.
121
+ * In dev mode, uses a base64-encoded JSON with file path and export name.
122
+ * In build mode, uses SHA256 hash or custom generator.
123
+ */
124
+ private generateFunctionId;
125
+ private get mode();
126
+ private getExternalDirectCallCandidates;
127
+ private resolveIdCached;
128
+ private getExportResolutionCache;
129
+ private init;
130
+ /**
131
+ * Extracts bindings and exports from an already-parsed AST.
132
+ */
133
+ private extractModuleInfo;
134
+ ingestModule({
135
+ code,
136
+ id,
137
+ parserFilename,
138
+ }: {
139
+ code: string;
140
+ id: string;
141
+ parserFilename?: string;
142
+ }): {
143
+ info: ModuleInfo;
144
+ ast: import('@tanstack/router-utils').ParseAstResult;
145
+ };
146
+ invalidateModule(id: string): boolean;
147
+ invalidateModules(ids: Iterable<string>): Set<string>;
148
+ getTransitiveImporters(ids: string | Iterable<string>): Promise<Set<string>>;
149
+ compile({
150
+ code,
151
+ id,
152
+ parserFilename,
153
+ detectedKinds,
154
+ warn,
155
+ }: {
156
+ code: string;
157
+ id: string;
158
+ parserFilename?: string;
159
+ /** Pre-detected kinds present in this file. If not provided, all valid kinds are checked. */
160
+ detectedKinds?: Set<LookupKind>;
161
+ warn?: (message: string) => void;
162
+ }): Promise<StartCompilerTransformResult | null>;
163
+ private generateResultFromAst;
164
+ private getAstTransformPluginsForCode;
165
+ private runAstTransforms;
166
+ private runExternalTransforms;
167
+ private resolveIdentifierKind;
168
+ /**
169
+ * Recursively find an export in a module, following `export * from` chains.
170
+ * Returns the module info and binding if found, or undefined if not found.
171
+ */
172
+ private findExportInModule;
173
+ private resolveBindingTarget;
174
+ private resolveKnownImportKind;
175
+ private resolveImportKind;
176
+ private resolveBindingKind;
177
+ private resolveExprKind;
178
+ private resolveCalleeKind;
179
+ private getModuleInfo;
180
+ }
181
+ export {};