@bleedingdev/modern-js-plugin-tanstack 3.2.0-ultramodern.12 → 3.2.0-ultramodern.121

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 (136) hide show
  1. package/dist/cjs/cli/index.js +89 -31
  2. package/dist/cjs/cli/routeSplitting.js +55 -0
  3. package/dist/cjs/cli/tanstackTypes.js +172 -170
  4. package/dist/cjs/cli.js +12 -8
  5. package/dist/cjs/runtime/basepathRewrite.js +12 -8
  6. package/dist/cjs/runtime/dataMutation.js +9 -5
  7. package/dist/cjs/runtime/hooks.js +20 -19
  8. package/dist/cjs/runtime/hydrationBoundary.js +48 -0
  9. package/dist/cjs/runtime/index.js +79 -35
  10. package/dist/cjs/runtime/lifecycle.js +21 -91
  11. package/dist/cjs/runtime/loaderBridge.js +173 -0
  12. package/dist/cjs/runtime/outlet.js +58 -0
  13. package/dist/cjs/runtime/plugin.js +195 -114
  14. package/dist/cjs/runtime/plugin.node.js +45 -45
  15. package/dist/cjs/runtime/plugin.worker.js +53 -0
  16. package/dist/cjs/runtime/pluginCore.js +55 -0
  17. package/dist/cjs/runtime/prefetchLink.js +10 -6
  18. package/dist/cjs/runtime/register.js +56 -0
  19. package/dist/cjs/runtime/routeTree.js +74 -207
  20. package/dist/cjs/runtime/router.js +41 -0
  21. package/dist/cjs/runtime/rsc/ClientSlot.js +9 -5
  22. package/dist/cjs/runtime/rsc/CompositeComponent.js +9 -5
  23. package/dist/cjs/runtime/rsc/ReplayableStream.js +14 -9
  24. package/dist/cjs/runtime/rsc/RscNodeRenderer.js +9 -5
  25. package/dist/cjs/runtime/rsc/SlotContext.js +9 -5
  26. package/dist/cjs/runtime/rsc/client.js +9 -5
  27. package/dist/cjs/runtime/rsc/createRscProxy.js +9 -5
  28. package/dist/cjs/runtime/rsc/index.js +9 -5
  29. package/dist/cjs/runtime/rsc/payloadRouter.js +44 -6
  30. package/dist/cjs/runtime/rsc/server.js +9 -5
  31. package/dist/cjs/runtime/rsc/slotUsageSanitizer.js +9 -5
  32. package/dist/cjs/runtime/rsc/symbols.js +20 -15
  33. package/dist/cjs/runtime/state.js +45 -0
  34. package/dist/cjs/runtime/types.js +31 -1
  35. package/dist/cjs/runtime/utils.js +9 -10
  36. package/dist/cjs/runtime.js +9 -5
  37. package/dist/esm/cli/index.mjs +75 -27
  38. package/dist/esm/cli/routeSplitting.mjs +14 -0
  39. package/dist/esm/cli/tanstackTypes.mjs +158 -160
  40. package/dist/esm/runtime/hooks.mjs +1 -8
  41. package/dist/esm/runtime/hydrationBoundary.mjs +10 -0
  42. package/dist/esm/runtime/index.mjs +5 -2
  43. package/dist/esm/runtime/lifecycle.mjs +1 -82
  44. package/dist/esm/runtime/loaderBridge.mjs +114 -0
  45. package/dist/esm/runtime/outlet.mjs +17 -0
  46. package/dist/esm/runtime/plugin.mjs +191 -114
  47. package/dist/esm/runtime/plugin.node.mjs +40 -44
  48. package/dist/esm/runtime/plugin.worker.mjs +1 -0
  49. package/dist/esm/runtime/pluginCore.mjs +14 -0
  50. package/dist/esm/runtime/prefetchLink.mjs +1 -1
  51. package/dist/esm/runtime/register.mjs +18 -0
  52. package/dist/esm/runtime/routeTree.mjs +59 -193
  53. package/dist/esm/runtime/router.mjs +2 -0
  54. package/dist/esm/runtime/rsc/payloadRouter.mjs +35 -1
  55. package/dist/esm/runtime/state.mjs +7 -0
  56. package/dist/esm/runtime/types.mjs +7 -0
  57. package/dist/esm/runtime/utils.mjs +0 -5
  58. package/dist/esm-node/cli/index.mjs +75 -27
  59. package/dist/esm-node/cli/routeSplitting.mjs +15 -0
  60. package/dist/esm-node/cli/tanstackTypes.mjs +158 -160
  61. package/dist/esm-node/runtime/hooks.mjs +1 -8
  62. package/dist/esm-node/runtime/hydrationBoundary.mjs +11 -0
  63. package/dist/esm-node/runtime/index.mjs +5 -2
  64. package/dist/esm-node/runtime/lifecycle.mjs +1 -82
  65. package/dist/esm-node/runtime/loaderBridge.mjs +115 -0
  66. package/dist/esm-node/runtime/outlet.mjs +18 -0
  67. package/dist/esm-node/runtime/plugin.mjs +191 -114
  68. package/dist/esm-node/runtime/plugin.node.mjs +40 -44
  69. package/dist/esm-node/runtime/plugin.worker.mjs +2 -0
  70. package/dist/esm-node/runtime/pluginCore.mjs +15 -0
  71. package/dist/esm-node/runtime/prefetchLink.mjs +1 -1
  72. package/dist/esm-node/runtime/register.mjs +19 -0
  73. package/dist/esm-node/runtime/routeTree.mjs +59 -193
  74. package/dist/esm-node/runtime/router.mjs +3 -0
  75. package/dist/esm-node/runtime/rsc/payloadRouter.mjs +35 -1
  76. package/dist/esm-node/runtime/state.mjs +8 -0
  77. package/dist/esm-node/runtime/types.mjs +7 -0
  78. package/dist/esm-node/runtime/utils.mjs +0 -5
  79. package/dist/types/cli/index.d.ts +14 -1
  80. package/dist/types/cli/routeSplitting.d.ts +20 -0
  81. package/dist/types/cli/tanstackTypes.d.ts +21 -1
  82. package/dist/types/runtime/hooks.d.ts +8 -33
  83. package/dist/types/runtime/hydrationBoundary.d.ts +2 -0
  84. package/dist/types/runtime/index.d.ts +8 -3
  85. package/dist/types/runtime/lifecycle.d.ts +7 -22
  86. package/dist/types/runtime/loaderBridge.d.ts +48 -0
  87. package/dist/types/runtime/outlet.d.ts +2 -0
  88. package/dist/types/runtime/plugin.d.ts +2 -15
  89. package/dist/types/runtime/plugin.node.d.ts +2 -15
  90. package/dist/types/runtime/plugin.worker.d.ts +1 -0
  91. package/dist/types/runtime/pluginCore.d.ts +21 -0
  92. package/dist/types/runtime/register.d.ts +9 -0
  93. package/dist/types/runtime/routeTree.d.ts +0 -2
  94. package/dist/types/runtime/router.d.ts +14 -0
  95. package/dist/types/runtime/state.d.ts +16 -0
  96. package/dist/types/runtime/types.d.ts +14 -53
  97. package/package.json +42 -40
  98. package/rstest.config.mts +6 -0
  99. package/src/cli/index.ts +162 -23
  100. package/src/cli/routeSplitting.ts +43 -0
  101. package/src/cli/tanstackTypes.ts +331 -187
  102. package/src/runtime/hooks.ts +10 -27
  103. package/src/runtime/hydrationBoundary.tsx +12 -0
  104. package/src/runtime/index.tsx +17 -7
  105. package/src/runtime/lifecycle.ts +16 -151
  106. package/src/runtime/loaderBridge.ts +257 -0
  107. package/src/runtime/outlet.tsx +48 -0
  108. package/src/runtime/plugin.node.tsx +72 -85
  109. package/src/runtime/plugin.tsx +361 -206
  110. package/src/runtime/plugin.worker.tsx +4 -0
  111. package/src/runtime/pluginCore.ts +48 -0
  112. package/src/runtime/prefetchLink.tsx +1 -1
  113. package/src/runtime/register.ts +58 -0
  114. package/src/runtime/routeTree.ts +163 -354
  115. package/src/runtime/router.ts +15 -0
  116. package/src/runtime/rsc/payloadRouter.ts +45 -2
  117. package/src/runtime/ssr-shim.d.ts +1 -3
  118. package/src/runtime/state.ts +29 -0
  119. package/src/runtime/types.ts +32 -66
  120. package/src/runtime/utils.tsx +3 -6
  121. package/tests/router/cli.test.ts +586 -5
  122. package/tests/router/fastDefaults.test.ts +25 -0
  123. package/tests/router/hooks.test.ts +26 -0
  124. package/tests/router/hydrationBoundary.test.tsx +23 -0
  125. package/tests/router/loaderBridge.test.ts +211 -0
  126. package/tests/router/packageSurface.test.ts +24 -0
  127. package/tests/router/prefetchLink.test.tsx +43 -7
  128. package/tests/router/register.test.ts +46 -0
  129. package/tests/router/routeTree.test.ts +381 -81
  130. package/tests/router/rsc.test.tsx +70 -0
  131. package/tests/router/tanstackTypes.test.ts +573 -1
  132. package/dist/cjs/runtime/DefaultNotFound.js +0 -47
  133. package/dist/esm/runtime/DefaultNotFound.mjs +0 -13
  134. package/dist/esm-node/runtime/DefaultNotFound.mjs +0 -14
  135. package/dist/types/runtime/DefaultNotFound.d.ts +0 -2
  136. package/src/runtime/DefaultNotFound.tsx +0 -15
@@ -0,0 +1,48 @@
1
+ import type { Plugin, RuntimePluginExtends } from '@modern-js/plugin';
2
+ import type { RuntimePluginAPI } from '@modern-js/plugin/runtime';
3
+ import {
4
+ getGlobalLayoutApp,
5
+ getGlobalRoutes,
6
+ type TInternalRuntimeContext,
7
+ } from '@modern-js/runtime/context';
8
+ import { merge } from '@modern-js/runtime-utils/merge';
9
+ import type { RouterExtendsHooks } from './hooks';
10
+ import type { RouterConfig } from './types';
11
+
12
+ export type TanstackRouterRuntimeConfig = {
13
+ plugins?: TanstackRouterRuntimePlugin[];
14
+ router?: Partial<RouterConfig>;
15
+ [key: string]: unknown;
16
+ };
17
+
18
+ type TanstackRouterRuntimeExtends = Required<
19
+ RuntimePluginExtends<TanstackRouterRuntimeConfig, TInternalRuntimeContext>
20
+ > & {
21
+ extendHooks: RouterExtendsHooks;
22
+ };
23
+
24
+ export type TanstackRouterPluginAPI =
25
+ RuntimePluginAPI<TanstackRouterRuntimeExtends>;
26
+
27
+ export type TanstackRouterRuntimePlugin = Plugin<
28
+ TanstackRouterPluginAPI,
29
+ TInternalRuntimeContext
30
+ >;
31
+
32
+ export function getMergedRouterConfig(
33
+ api: TanstackRouterPluginAPI,
34
+ userConfig: Partial<RouterConfig>,
35
+ ): RouterConfig {
36
+ const pluginConfig = api.getRuntimeConfig() as {
37
+ router?: Partial<RouterConfig>;
38
+ };
39
+ return merge(pluginConfig.router || {}, userConfig) as RouterConfig;
40
+ }
41
+
42
+ export function getFinalRouteConfig(mergedConfig: RouterConfig) {
43
+ return {
44
+ routes: getGlobalRoutes(),
45
+ globalApp: getGlobalLayoutApp(),
46
+ ...mergedConfig.routesConfig,
47
+ };
48
+ }
@@ -28,7 +28,7 @@ function resolvePreloadFromPrefetch(
28
28
  return prefetch;
29
29
  }
30
30
 
31
- return preload;
31
+ return 'viewport';
32
32
  }
33
33
 
34
34
  export type LinkProps<
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Registers the TanStack router provider with the @modern-js/runtime router
3
+ * provider registry. Importing '@modern-js/plugin-tanstack/runtime' is enough
4
+ * to make `runtime.router.framework: 'tanstack'` resolvable by the built-in
5
+ * router runtime plugin.
6
+ *
7
+ * This module is intentionally side-effectful (see `sideEffects` in
8
+ * package.json).
9
+ */
10
+ import {
11
+ type RouterProviderFactory,
12
+ type RouterProviderPlugin,
13
+ registerRouterProvider,
14
+ } from '@modern-js/runtime/context';
15
+ import { Form, RouteActionResponseError, useFetcher } from './dataMutation';
16
+ import { Outlet } from './outlet';
17
+ import { tanstackRouterPlugin } from './plugin';
18
+ import { Link, NavLink } from './prefetchLink';
19
+
20
+ // The TanStack runtime plugin types its API against its own hook registry,
21
+ // while the provider contract is typed against the built-in router hook
22
+ // registry of @modern-js/runtime. The two are runtime-compatible (the
23
+ // built-in router plugin registers the hooks and forwards its API to the
24
+ // resolved provider), but nominally distinct — hence the explicit adapter
25
+ // cast at this single boundary.
26
+ const tanstackRouterProviderFactory: RouterProviderFactory = userConfig =>
27
+ tanstackRouterPlugin(userConfig) as unknown as RouterProviderPlugin;
28
+
29
+ registerRouterProvider('tanstack', tanstackRouterProviderFactory);
30
+
31
+ /**
32
+ * Compatibility bindings for the deprecated `@modern-js/runtime/tanstack-router`
33
+ * alias. `@modern-js/runtime` cannot depend on this package (the dependency
34
+ * direction is plugin-tanstack -> runtime), so the alias resolves the
35
+ * Modern.js specific bindings through this `Symbol.for` slot at use time.
36
+ *
37
+ * `??=` keeps the first copy: when Module Federation evaluates a second
38
+ * bundled copy of this module, both copies are functionally identical and the
39
+ * established registration wins (mirroring the router-provider registry).
40
+ */
41
+ const COMPAT_BINDINGS_SLOT: unique symbol = Symbol.for(
42
+ '@modern-js/plugin-tanstack:runtime-compat-bindings',
43
+ );
44
+
45
+ export const tanstackRouterCompatBindings = {
46
+ Form,
47
+ Link,
48
+ NavLink,
49
+ Outlet,
50
+ RouteActionResponseError,
51
+ useFetcher,
52
+ };
53
+
54
+ (
55
+ globalThis as {
56
+ [COMPAT_BINDINGS_SLOT]?: typeof tanstackRouterCompatBindings;
57
+ }
58
+ )[COMPAT_BINDINGS_SLOT] ??= tanstackRouterCompatBindings;