@bleedingdev/modern-js-runtime 3.2.0-ultramodern.120 → 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 (203) hide show
  1. package/dist/cjs/boundary-debugger/index.js +4 -0
  2. package/dist/cjs/cli/index.js +11 -0
  3. package/dist/cjs/{router/runtime/tanstack/rsc/ClientSlot.js → core/context/extensions.js} +33 -21
  4. package/dist/cjs/{router/runtime/tanstack/rsc/SlotContext.js → core/context/helmetContext.js} +16 -20
  5. package/dist/cjs/core/context/index.js +65 -0
  6. package/dist/cjs/core/react/wrapper.js +6 -4
  7. package/dist/cjs/core/server/helmet.js +2 -1
  8. package/dist/cjs/core/server/requestHandler.js +42 -29
  9. package/dist/cjs/core/server/routerCleanup.js +110 -0
  10. package/dist/cjs/core/server/scriptOrder.js +75 -4
  11. package/dist/cjs/core/server/stream/afterTemplate.js +6 -18
  12. package/dist/cjs/core/server/stream/deferredScript.js +4 -1
  13. package/dist/cjs/core/server/string/index.js +1 -7
  14. package/dist/cjs/core/server/string/loadable.js +13 -40
  15. package/dist/cjs/core/server/string/ssrData.js +1 -1
  16. package/dist/cjs/core/server/utils.js +31 -8
  17. package/dist/cjs/exports/head.js +135 -74
  18. package/dist/cjs/exports/tanstack-router.js +36 -305
  19. package/dist/cjs/module-federation/index.js +178 -0
  20. package/dist/cjs/router/cli/code/index.js +1 -47
  21. package/dist/cjs/router/cli/code/templates.js +1 -14
  22. package/dist/cjs/router/cli/handler.js +1 -1
  23. package/dist/cjs/router/cli/index.js +2 -23
  24. package/dist/cjs/router/runtime/DeferredDataScripts.node.js +16 -4
  25. package/dist/cjs/router/runtime/PrefetchLink.js +2 -3
  26. package/dist/cjs/router/runtime/internal.js +20 -13
  27. package/dist/cjs/router/runtime/lifecycle.js +37 -22
  28. package/dist/cjs/router/runtime/plugin.js +2 -9
  29. package/dist/cjs/router/runtime/plugin.node.js +2 -7
  30. package/dist/cjs/router/runtime/provider.js +107 -0
  31. package/dist/cjs/router/runtime/utils.js +35 -9
  32. package/dist/esm/boundary-debugger/index.mjs +4 -0
  33. package/dist/esm/cli/index.mjs +4 -2
  34. package/dist/esm/core/context/extensions.mjs +28 -0
  35. package/dist/esm/core/context/helmetContext.mjs +13 -0
  36. package/dist/esm/core/context/index.mjs +5 -0
  37. package/dist/esm/core/react/wrapper.mjs +6 -4
  38. package/dist/esm/core/server/helmet.mjs +2 -1
  39. package/dist/esm/core/server/requestHandler.mjs +43 -30
  40. package/dist/esm/core/server/routerCleanup.mjs +66 -0
  41. package/dist/esm/core/server/scriptOrder.mjs +60 -1
  42. package/dist/esm/core/server/stream/afterTemplate.mjs +8 -20
  43. package/dist/esm/core/server/stream/deferredScript.mjs +4 -1
  44. package/dist/esm/core/server/string/index.mjs +3 -9
  45. package/dist/esm/core/server/string/loadable.mjs +11 -38
  46. package/dist/esm/core/server/string/ssrData.mjs +2 -2
  47. package/dist/esm/core/server/utils.mjs +31 -8
  48. package/dist/esm/exports/head.mjs +135 -74
  49. package/dist/esm/exports/tanstack-router.mjs +30 -4
  50. package/dist/esm/module-federation/index.mjs +109 -0
  51. package/dist/esm/router/cli/code/index.mjs +1 -47
  52. package/dist/esm/router/cli/code/templates.mjs +1 -14
  53. package/dist/esm/router/cli/handler.mjs +1 -1
  54. package/dist/esm/router/cli/index.mjs +3 -24
  55. package/dist/esm/router/runtime/DeferredDataScripts.node.mjs +16 -4
  56. package/dist/esm/router/runtime/PrefetchLink.mjs +2 -3
  57. package/dist/esm/router/runtime/internal.mjs +16 -15
  58. package/dist/esm/router/runtime/lifecycle.mjs +22 -13
  59. package/dist/esm/router/runtime/plugin.mjs +4 -11
  60. package/dist/esm/router/runtime/plugin.node.mjs +4 -9
  61. package/dist/esm/router/runtime/provider.mjs +57 -0
  62. package/dist/esm/router/runtime/utils.mjs +35 -9
  63. package/dist/esm-node/boundary-debugger/index.mjs +4 -0
  64. package/dist/esm-node/cli/index.mjs +4 -2
  65. package/dist/esm-node/core/context/extensions.mjs +29 -0
  66. package/dist/esm-node/core/context/helmetContext.mjs +14 -0
  67. package/dist/esm-node/core/context/index.mjs +5 -0
  68. package/dist/esm-node/core/react/wrapper.mjs +6 -4
  69. package/dist/esm-node/core/server/helmet.mjs +2 -1
  70. package/dist/esm-node/core/server/requestHandler.mjs +43 -30
  71. package/dist/esm-node/core/server/routerCleanup.mjs +67 -0
  72. package/dist/esm-node/core/server/scriptOrder.mjs +60 -1
  73. package/dist/esm-node/core/server/stream/afterTemplate.mjs +8 -20
  74. package/dist/esm-node/core/server/stream/deferredScript.mjs +4 -1
  75. package/dist/esm-node/core/server/string/index.mjs +3 -9
  76. package/dist/esm-node/core/server/string/loadable.mjs +11 -38
  77. package/dist/esm-node/core/server/string/ssrData.mjs +2 -2
  78. package/dist/esm-node/core/server/utils.mjs +31 -8
  79. package/dist/esm-node/exports/head.mjs +135 -74
  80. package/dist/esm-node/exports/tanstack-router.mjs +30 -4
  81. package/dist/esm-node/module-federation/index.mjs +110 -0
  82. package/dist/esm-node/router/cli/code/index.mjs +1 -47
  83. package/dist/esm-node/router/cli/code/templates.mjs +1 -14
  84. package/dist/esm-node/router/cli/handler.mjs +1 -1
  85. package/dist/esm-node/router/cli/index.mjs +3 -24
  86. package/dist/esm-node/router/runtime/DeferredDataScripts.node.mjs +16 -4
  87. package/dist/esm-node/router/runtime/PrefetchLink.mjs +2 -3
  88. package/dist/esm-node/router/runtime/internal.mjs +16 -15
  89. package/dist/esm-node/router/runtime/lifecycle.mjs +22 -13
  90. package/dist/esm-node/router/runtime/plugin.mjs +4 -11
  91. package/dist/esm-node/router/runtime/plugin.node.mjs +4 -9
  92. package/dist/esm-node/router/runtime/provider.mjs +58 -0
  93. package/dist/esm-node/router/runtime/utils.mjs +35 -9
  94. package/dist/types/cli/index.d.ts +3 -1
  95. package/dist/types/core/context/extensions.d.ts +37 -0
  96. package/dist/types/core/context/helmetContext.d.ts +10 -0
  97. package/dist/types/core/context/index.d.ts +6 -0
  98. package/dist/types/core/context/runtime.d.ts +1 -11
  99. package/dist/types/core/server/routerCleanup.d.ts +28 -0
  100. package/dist/types/core/server/scriptOrder.d.ts +24 -0
  101. package/dist/types/core/server/string/loadable.d.ts +1 -7
  102. package/dist/types/core/server/utils.d.ts +1 -0
  103. package/dist/types/exports/tanstack-router.d.ts +88 -7
  104. package/dist/types/module-federation/index.d.ts +65 -0
  105. package/dist/types/router/cli/code/index.d.ts +1 -3
  106. package/dist/types/router/cli/handler.d.ts +0 -3
  107. package/dist/types/router/runtime/internal.d.ts +1 -0
  108. package/dist/types/router/runtime/lifecycle.d.ts +2 -0
  109. package/dist/types/router/runtime/plugin.d.ts +1 -1
  110. package/dist/types/router/runtime/plugin.node.d.ts +1 -1
  111. package/dist/types/router/runtime/provider.d.ts +61 -0
  112. package/package.json +15 -11
  113. package/rstest.config.mts +2 -4
  114. package/dist/cjs/router/cli/code/tanstackTypes.js +0 -447
  115. package/dist/cjs/router/runtime/tanstack/basepathRewrite.js +0 -66
  116. package/dist/cjs/router/runtime/tanstack/dataMutation.js +0 -349
  117. package/dist/cjs/router/runtime/tanstack/hydrationBoundary.js +0 -48
  118. package/dist/cjs/router/runtime/tanstack/outlet.js +0 -58
  119. package/dist/cjs/router/runtime/tanstack/plugin.js +0 -342
  120. package/dist/cjs/router/runtime/tanstack/plugin.node.js +0 -272
  121. package/dist/cjs/router/runtime/tanstack/prefetchLink.js +0 -59
  122. package/dist/cjs/router/runtime/tanstack/routeTree.js +0 -525
  123. package/dist/cjs/router/runtime/tanstack/rsc/CompositeComponent.js +0 -79
  124. package/dist/cjs/router/runtime/tanstack/rsc/ReplayableStream.js +0 -146
  125. package/dist/cjs/router/runtime/tanstack/rsc/RscNodeRenderer.js +0 -69
  126. package/dist/cjs/router/runtime/tanstack/rsc/client.js +0 -97
  127. package/dist/cjs/router/runtime/tanstack/rsc/createRscProxy.js +0 -145
  128. package/dist/cjs/router/runtime/tanstack/rsc/index.js +0 -46
  129. package/dist/cjs/router/runtime/tanstack/rsc/server.js +0 -250
  130. package/dist/cjs/router/runtime/tanstack/rsc/slotUsageSanitizer.js +0 -69
  131. package/dist/cjs/router/runtime/tanstack/rsc/symbols.js +0 -77
  132. package/dist/cjs/ssr/index.node.js +0 -125
  133. package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -88
  134. package/dist/cjs/ssr/serverRender/renderToString/entry.js +0 -200
  135. package/dist/cjs/ssr/serverRender/types.js +0 -40
  136. package/dist/esm/router/cli/code/tanstackTypes.mjs +0 -396
  137. package/dist/esm/router/runtime/tanstack/basepathRewrite.mjs +0 -28
  138. package/dist/esm/router/runtime/tanstack/dataMutation.mjs +0 -305
  139. package/dist/esm/router/runtime/tanstack/hydrationBoundary.mjs +0 -10
  140. package/dist/esm/router/runtime/tanstack/outlet.mjs +0 -17
  141. package/dist/esm/router/runtime/tanstack/plugin.mjs +0 -304
  142. package/dist/esm/router/runtime/tanstack/plugin.node.mjs +0 -234
  143. package/dist/esm/router/runtime/tanstack/prefetchLink.mjs +0 -18
  144. package/dist/esm/router/runtime/tanstack/routeTree.mjs +0 -481
  145. package/dist/esm/router/runtime/tanstack/rsc/ClientSlot.mjs +0 -19
  146. package/dist/esm/router/runtime/tanstack/rsc/CompositeComponent.mjs +0 -41
  147. package/dist/esm/router/runtime/tanstack/rsc/ReplayableStream.mjs +0 -104
  148. package/dist/esm/router/runtime/tanstack/rsc/RscNodeRenderer.mjs +0 -31
  149. package/dist/esm/router/runtime/tanstack/rsc/SlotContext.mjs +0 -17
  150. package/dist/esm/router/runtime/tanstack/rsc/client.mjs +0 -53
  151. package/dist/esm/router/runtime/tanstack/rsc/createRscProxy.mjs +0 -107
  152. package/dist/esm/router/runtime/tanstack/rsc/index.mjs +0 -1
  153. package/dist/esm/router/runtime/tanstack/rsc/server.mjs +0 -200
  154. package/dist/esm/router/runtime/tanstack/rsc/slotUsageSanitizer.mjs +0 -31
  155. package/dist/esm/router/runtime/tanstack/rsc/symbols.mjs +0 -17
  156. package/dist/esm/ssr/index.node.mjs +0 -44
  157. package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.mjs +0 -50
  158. package/dist/esm/ssr/serverRender/renderToString/entry.mjs +0 -151
  159. package/dist/esm/ssr/serverRender/types.mjs +0 -1
  160. package/dist/esm-node/router/cli/code/tanstackTypes.mjs +0 -397
  161. package/dist/esm-node/router/runtime/tanstack/basepathRewrite.mjs +0 -29
  162. package/dist/esm-node/router/runtime/tanstack/dataMutation.mjs +0 -306
  163. package/dist/esm-node/router/runtime/tanstack/hydrationBoundary.mjs +0 -11
  164. package/dist/esm-node/router/runtime/tanstack/outlet.mjs +0 -18
  165. package/dist/esm-node/router/runtime/tanstack/plugin.mjs +0 -305
  166. package/dist/esm-node/router/runtime/tanstack/plugin.node.mjs +0 -235
  167. package/dist/esm-node/router/runtime/tanstack/prefetchLink.mjs +0 -19
  168. package/dist/esm-node/router/runtime/tanstack/routeTree.mjs +0 -482
  169. package/dist/esm-node/router/runtime/tanstack/rsc/ClientSlot.mjs +0 -20
  170. package/dist/esm-node/router/runtime/tanstack/rsc/CompositeComponent.mjs +0 -42
  171. package/dist/esm-node/router/runtime/tanstack/rsc/ReplayableStream.mjs +0 -105
  172. package/dist/esm-node/router/runtime/tanstack/rsc/RscNodeRenderer.mjs +0 -32
  173. package/dist/esm-node/router/runtime/tanstack/rsc/SlotContext.mjs +0 -18
  174. package/dist/esm-node/router/runtime/tanstack/rsc/client.mjs +0 -54
  175. package/dist/esm-node/router/runtime/tanstack/rsc/createRscProxy.mjs +0 -108
  176. package/dist/esm-node/router/runtime/tanstack/rsc/index.mjs +0 -2
  177. package/dist/esm-node/router/runtime/tanstack/rsc/server.mjs +0 -201
  178. package/dist/esm-node/router/runtime/tanstack/rsc/slotUsageSanitizer.mjs +0 -32
  179. package/dist/esm-node/router/runtime/tanstack/rsc/symbols.mjs +0 -18
  180. package/dist/esm-node/ssr/index.node.mjs +0 -45
  181. package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.after.mjs +0 -51
  182. package/dist/esm-node/ssr/serverRender/renderToString/entry.mjs +0 -152
  183. package/dist/esm-node/ssr/serverRender/types.mjs +0 -2
  184. package/dist/types/router/cli/code/tanstackTypes.d.ts +0 -10
  185. package/dist/types/router/runtime/tanstack/basepathRewrite.d.ts +0 -8
  186. package/dist/types/router/runtime/tanstack/dataMutation.d.ts +0 -29
  187. package/dist/types/router/runtime/tanstack/hydrationBoundary.d.ts +0 -2
  188. package/dist/types/router/runtime/tanstack/outlet.d.ts +0 -2
  189. package/dist/types/router/runtime/tanstack/plugin.d.ts +0 -6
  190. package/dist/types/router/runtime/tanstack/plugin.node.d.ts +0 -6
  191. package/dist/types/router/runtime/tanstack/prefetchLink.d.ts +0 -11
  192. package/dist/types/router/runtime/tanstack/routeTree.d.ts +0 -8
  193. package/dist/types/router/runtime/tanstack/rsc/ClientSlot.d.ts +0 -5
  194. package/dist/types/router/runtime/tanstack/rsc/CompositeComponent.d.ts +0 -3
  195. package/dist/types/router/runtime/tanstack/rsc/ReplayableStream.d.ts +0 -24
  196. package/dist/types/router/runtime/tanstack/rsc/RscNodeRenderer.d.ts +0 -5
  197. package/dist/types/router/runtime/tanstack/rsc/SlotContext.d.ts +0 -11
  198. package/dist/types/router/runtime/tanstack/rsc/client.d.ts +0 -11
  199. package/dist/types/router/runtime/tanstack/rsc/createRscProxy.d.ts +0 -7
  200. package/dist/types/router/runtime/tanstack/rsc/index.d.ts +0 -2
  201. package/dist/types/router/runtime/tanstack/rsc/server.d.ts +0 -14
  202. package/dist/types/router/runtime/tanstack/rsc/slotUsageSanitizer.d.ts +0 -2
  203. package/dist/types/router/runtime/tanstack/rsc/symbols.d.ts +0 -46
@@ -1,481 +0,0 @@
1
- import { createRootRoute, createRoute, notFound, redirect, rootRouteId } from "@tanstack/react-router";
2
- import { createElement } from "react";
3
- import { DefaultNotFound } from "../DefaultNotFound.mjs";
4
- import { withModernRouteMatchContext } from "./outlet.mjs";
5
- function createTanstackRoute(options) {
6
- return createRoute(options);
7
- }
8
- function createTanstackRootRoute(options) {
9
- return createRootRoute(options);
10
- }
11
- function wrapRouteComponentWithModernContext(route, component, routeId) {
12
- const routeMatchId = routeId || route.id;
13
- if (component && routeMatchId) route.options.component = withModernRouteMatchContext(component, routeMatchId);
14
- }
15
- function toTanstackPath(pathname) {
16
- return pathname.split('/').map((segment)=>{
17
- if (!segment) return segment;
18
- if ('*' === segment) return '$';
19
- if (segment.startsWith(':')) {
20
- const name = segment.slice(1);
21
- if (name.endsWith('?')) return `{-$${name.slice(0, -1)}}`;
22
- return `$${name}`;
23
- }
24
- return segment;
25
- }).join('/');
26
- }
27
- function isResponse(value) {
28
- const record = value;
29
- return null != record && 'object' == typeof record && 'number' == typeof record.status && 'object' == typeof record.headers;
30
- }
31
- function isTanstackRedirect(value) {
32
- return isResponse(value) && 'object' == typeof value.options;
33
- }
34
- const redirectStatusCodes = new Set([
35
- 301,
36
- 302,
37
- 303,
38
- 307,
39
- 308
40
- ]);
41
- function isRedirectResponse(res) {
42
- return redirectStatusCodes.has(res.status);
43
- }
44
- function isModernDeferredData(value) {
45
- if (!value || 'object' != typeof value) return false;
46
- const deferred = value;
47
- return true === deferred.__modern_deferred && Boolean(deferred.data) && 'object' == typeof deferred.data && !Array.isArray(deferred.data);
48
- }
49
- function normalizeModernLoaderResult(result) {
50
- return isModernDeferredData(result) ? result.data : result;
51
- }
52
- function pickRouteModuleComponent(routeModule, seen = new Set()) {
53
- if ('function' == typeof routeModule || routeModule && 'object' == typeof routeModule && '$$typeof' in routeModule) return routeModule;
54
- if (!routeModule || 'object' != typeof routeModule) return;
55
- if (seen.has(routeModule)) return;
56
- seen.add(routeModule);
57
- const module = routeModule;
58
- for (const candidate of [
59
- module.default,
60
- module.Component
61
- ]){
62
- const component = pickRouteModuleComponent(candidate, seen);
63
- if (component) return component;
64
- }
65
- }
66
- function createServerLazyImportComponent(lazyImport, fallbackComponent) {
67
- if ("u" > typeof document) return fallbackComponent;
68
- let resolvedComponent;
69
- let pendingLoad;
70
- const load = async ()=>{
71
- if (resolvedComponent) return resolvedComponent;
72
- const routeModule = await lazyImport();
73
- const component = pickRouteModuleComponent(routeModule);
74
- if (component) resolvedComponent = component;
75
- return resolvedComponent;
76
- };
77
- const Component = (props)=>{
78
- if (resolvedComponent) return createElement(resolvedComponent, props);
79
- pendingLoad ||= load();
80
- throw pendingLoad;
81
- };
82
- Component.load = load;
83
- Component.preload = load;
84
- return Component;
85
- }
86
- function throwTanstackRedirect(location) {
87
- const target = location || '/';
88
- try {
89
- new URL(target);
90
- throw redirect({
91
- href: target
92
- });
93
- } catch {
94
- throw redirect({
95
- to: target
96
- });
97
- }
98
- }
99
- function mapParamsForModernLoader({ modernRoute, params }) {
100
- if ('nested' === modernRoute.type && modernRoute.path?.includes('*')) {
101
- const { _splat, ...rest } = params;
102
- if (void 0 !== _splat) return {
103
- ...rest,
104
- '*': _splat
105
- };
106
- return rest;
107
- }
108
- return params;
109
- }
110
- function createModernRequest(input, signal) {
111
- return new Request(input, {
112
- signal
113
- });
114
- }
115
- function getModernUrlFromLoaderContext(ctx) {
116
- const href = 'string' == typeof ctx?.location ? ctx.location : ctx?.location?.publicHref || ctx?.location?.href || ctx?.location?.url?.href || '/';
117
- const baseRequest = ctx?.context?.request instanceof Request ? ctx.context.request : void 0;
118
- const baseUrl = baseRequest?.url || ("u" > typeof window ? window.origin : 'http://localhost');
119
- return new URL(href || '/', baseUrl);
120
- }
121
- function rememberRouteLocation(state, ctx) {
122
- state.currentUrl = getModernUrlFromLoaderContext(ctx);
123
- state.currentParams = ctx?.params || {};
124
- }
125
- function createModernShouldReload(shouldRevalidate, state) {
126
- if ('function' != typeof shouldRevalidate) return;
127
- const revalidate = shouldRevalidate;
128
- return (ctx)=>{
129
- const nextUrl = getModernUrlFromLoaderContext(ctx);
130
- const nextParams = ctx?.params || {};
131
- const result = revalidate({
132
- currentUrl: state.currentUrl || nextUrl,
133
- currentParams: state.currentParams || nextParams,
134
- nextUrl,
135
- nextParams,
136
- defaultShouldRevalidate: void 0
137
- });
138
- state.currentUrl = nextUrl;
139
- state.currentParams = nextParams;
140
- return 'boolean' == typeof result ? result : void 0;
141
- };
142
- }
143
- function wrapModernLoader(modernRoute, modernLoader, revalidationState) {
144
- const route = modernRoute;
145
- return async (ctx)=>{
146
- try {
147
- if (revalidationState) rememberRouteLocation(revalidationState, ctx);
148
- if ('function' == typeof route.lazyImport) try {
149
- await route.lazyImport();
150
- } catch {}
151
- const signal = ctx?.abortController?.signal || ctx?.signal || new AbortController().signal;
152
- const baseRequest = ctx?.context?.request instanceof Request ? ctx.context.request : void 0;
153
- const href = 'string' == typeof ctx?.location ? ctx.location : ctx?.location?.publicHref || ctx?.location?.href || ctx?.location?.url?.href || '';
154
- const request = void 0 !== baseRequest ? new Request(baseRequest, {
155
- signal
156
- }) : createModernRequest(href, signal);
157
- const params = mapParamsForModernLoader({
158
- modernRoute,
159
- params: ctx.params || {}
160
- });
161
- const result = modernLoader ? await modernLoader({
162
- request,
163
- params,
164
- context: ctx?.context?.requestContext
165
- }) : null;
166
- if (isResponse(result)) {
167
- if (isRedirectResponse(result)) {
168
- const location = result.headers.get('Location') || '/';
169
- throwTanstackRedirect(location);
170
- }
171
- if (404 === result.status) throw notFound();
172
- }
173
- return normalizeModernLoaderResult(result);
174
- } catch (err) {
175
- if (isResponse(err)) {
176
- if (isTanstackRedirect(err)) throw err;
177
- if (isRedirectResponse(err)) {
178
- const location = err.headers.get('Location') || '/';
179
- throwTanstackRedirect(location);
180
- }
181
- if (404 === err.status) throw notFound();
182
- }
183
- throw err;
184
- }
185
- };
186
- }
187
- function isRouteObjectPathlessLayout(route) {
188
- return !route.path && !route.index;
189
- }
190
- function isRouteObjectSplatRoute(route) {
191
- return 'string' == typeof route.path && route.path.includes('*');
192
- }
193
- function mapParamsForRouteObjectLoader({ route, params }) {
194
- if (isRouteObjectSplatRoute(route)) {
195
- const { _splat, ...rest } = params;
196
- if (void 0 !== _splat) return {
197
- ...rest,
198
- '*': _splat
199
- };
200
- return rest;
201
- }
202
- return params;
203
- }
204
- function wrapRouteObjectLoader(route, revalidationState) {
205
- const modernRoute = route;
206
- const routeLoader = modernRoute.loader;
207
- if ('function' != typeof routeLoader) return;
208
- return async (ctx)=>{
209
- try {
210
- if (revalidationState) rememberRouteLocation(revalidationState, ctx);
211
- if ('function' == typeof modernRoute.lazyImport) try {
212
- await modernRoute.lazyImport();
213
- } catch {}
214
- const signal = ctx?.abortController?.signal || ctx?.signal || new AbortController().signal;
215
- const baseRequest = ctx?.context?.request instanceof Request ? ctx.context.request : void 0;
216
- const href = 'string' == typeof ctx?.location ? ctx.location : ctx?.location?.publicHref || ctx?.location?.href || ctx?.location?.url?.href || '';
217
- const request = void 0 !== baseRequest ? new Request(baseRequest, {
218
- signal
219
- }) : createModernRequest(href, signal);
220
- const params = mapParamsForRouteObjectLoader({
221
- route,
222
- params: ctx.params || {}
223
- });
224
- const result = await routeLoader({
225
- request,
226
- params,
227
- context: ctx?.context?.requestContext
228
- });
229
- if (isResponse(result)) {
230
- if (isRedirectResponse(result)) {
231
- const location = result.headers.get('Location') || '/';
232
- throwTanstackRedirect(location);
233
- }
234
- if (404 === result.status) throw notFound();
235
- }
236
- return normalizeModernLoaderResult(result);
237
- } catch (err) {
238
- if (isResponse(err)) {
239
- if (isTanstackRedirect(err)) throw err;
240
- if (isRedirectResponse(err)) {
241
- const location = err.headers.get('Location') || '/';
242
- throwTanstackRedirect(location);
243
- }
244
- if (404 === err.status) throw notFound();
245
- }
246
- throw err;
247
- }
248
- };
249
- }
250
- function toRouteComponent(routeObject) {
251
- const route = routeObject;
252
- const lazyImport = 'function' == typeof route.lazyImport ? route.lazyImport : void 0;
253
- const fallbackComponent = route.Component ? route.Component : route.element ? ()=>route.element : void 0;
254
- if (lazyImport && fallbackComponent) return createServerLazyImportComponent(lazyImport, fallbackComponent);
255
- if (route.Component) return route.Component;
256
- const element = route.element;
257
- if (element) return ()=>element;
258
- }
259
- function toModernRouteComponent(route) {
260
- const component = route.component || void 0;
261
- if ('function' == typeof route.lazyImport && component) return createServerLazyImportComponent(route.lazyImport, component);
262
- return component;
263
- }
264
- function toErrorComponent(routeObject) {
265
- const route = routeObject;
266
- if (route.ErrorBoundary) return route.ErrorBoundary;
267
- if (route.errorElement) return ()=>route.errorElement;
268
- }
269
- function toPendingComponent(routeObject) {
270
- const route = routeObject;
271
- return route.HydrateFallback || route.pendingComponent || void 0;
272
- }
273
- function mergeModernRouteHandle(route) {
274
- const config = route.config;
275
- const handle = {
276
- ...route.handle,
277
- ...config && 'object' == typeof config ? config.handle : {}
278
- };
279
- return Object.keys(handle).length > 0 ? handle : void 0;
280
- }
281
- function createRouteStaticData(opts) {
282
- const staticData = {};
283
- if (opts.modernRouteId) staticData.modernRouteId = opts.modernRouteId;
284
- if (opts.modernRouteAction) staticData.modernRouteAction = opts.modernRouteAction;
285
- if (opts.modernRouteHandle) staticData.modernRouteHandle = opts.modernRouteHandle;
286
- if (opts.modernRouteHasAction) staticData.modernRouteHasAction = true;
287
- if (opts.modernRouteHasClientLoader) staticData.modernRouteHasClientLoader = true;
288
- if (opts.modernRouteHasLoader) staticData.modernRouteHasLoader = true;
289
- if (opts.modernRouteIsClientComponent) staticData.modernRouteIsClientComponent = true;
290
- if (opts.modernRouteLoader) staticData.modernRouteLoader = opts.modernRouteLoader;
291
- if (opts.modernRouteShouldRevalidate) staticData.modernRouteShouldRevalidate = opts.modernRouteShouldRevalidate;
292
- return Object.keys(staticData).length > 0 ? staticData : void 0;
293
- }
294
- function createRouteFromRouteObject(opts) {
295
- const { parent, routeObject } = opts;
296
- const modernRouteObject = routeObject;
297
- const revalidationState = {};
298
- const shouldRevalidate = modernRouteObject.shouldRevalidate;
299
- const shouldReload = createModernShouldReload(shouldRevalidate, revalidationState);
300
- const stableFallbackId = routeObject.id || modernRouteObject.file || routeObject.path || 'pathless';
301
- const component = toRouteComponent(routeObject);
302
- const base = {
303
- getParentRoute: ()=>parent,
304
- component,
305
- pendingComponent: toPendingComponent(routeObject),
306
- errorComponent: toErrorComponent(routeObject),
307
- staticData: createRouteStaticData({
308
- modernRouteId: routeObject.id,
309
- modernRouteAction: modernRouteObject.action,
310
- modernRouteHandle: mergeModernRouteHandle(modernRouteObject),
311
- modernRouteHasAction: modernRouteObject.hasAction || Boolean(modernRouteObject.action),
312
- modernRouteHasClientLoader: modernRouteObject.hasClientLoader || void 0 !== modernRouteObject.clientData,
313
- modernRouteHasLoader: modernRouteObject.hasLoader || 'function' == typeof modernRouteObject.loader,
314
- modernRouteIsClientComponent: modernRouteObject.isClientComponent,
315
- modernRouteLoader: modernRouteObject.loader,
316
- modernRouteShouldRevalidate: shouldRevalidate
317
- }),
318
- loader: wrapRouteObjectLoader(routeObject, revalidationState)
319
- };
320
- if (modernRouteObject.inValidSSRRoute) base.ssr = false;
321
- if (shouldReload) base.shouldReload = shouldReload;
322
- if (isRouteObjectPathlessLayout(routeObject)) base.id = stableFallbackId;
323
- else base.path = routeObject.index ? '/' : toTanstackPath(routeObject.path || '');
324
- const route = createTanstackRoute(base);
325
- wrapRouteComponentWithModernContext(route, component, routeObject.id);
326
- const children = routeObject.children;
327
- if (children && children.length > 0) {
328
- const childRoutes = children.map((child)=>createRouteFromRouteObject({
329
- parent: route,
330
- routeObject: child
331
- }));
332
- route.addChildren(childRoutes);
333
- }
334
- return route;
335
- }
336
- function createRouteFromModernRoute(opts) {
337
- const { parent, modernRoute } = opts;
338
- const route = modernRoute;
339
- const revalidationState = {};
340
- const modernId = route.id;
341
- const stableFallbackId = modernId || route._component || route.filename || route.data || ('function' == typeof route.loader ? route.id : void 0);
342
- const pendingComponent = route.loading || route.pendingComponent;
343
- const errorComponent = route.error || route.errorComponent;
344
- const component = toModernRouteComponent(route);
345
- const modernLoader = route.loader;
346
- const modernAction = route.action;
347
- const modernShouldRevalidate = route.shouldRevalidate;
348
- const shouldReload = createModernShouldReload(modernShouldRevalidate, revalidationState);
349
- const isPathlessLayout = 'nested' === route.type && 'boolean' != typeof route.index && void 0 === route.path;
350
- const isIndexRoute = 'nested' === route.type && Boolean(route.index);
351
- const base = {
352
- getParentRoute: ()=>parent,
353
- component: component || void 0,
354
- pendingComponent: pendingComponent || void 0,
355
- errorComponent: errorComponent || void 0,
356
- staticData: createRouteStaticData({
357
- modernRouteId: modernId,
358
- modernRouteAction: modernAction,
359
- modernRouteHandle: mergeModernRouteHandle(route),
360
- modernRouteHasAction: route.hasAction || Boolean(modernAction),
361
- modernRouteHasClientLoader: route.hasClientLoader || void 0 !== route.clientData,
362
- modernRouteHasLoader: route.hasLoader || 'function' == typeof modernLoader,
363
- modernRouteIsClientComponent: route.isClientComponent,
364
- modernRouteLoader: modernLoader,
365
- modernRouteShouldRevalidate: modernShouldRevalidate
366
- }),
367
- loader: wrapModernLoader(modernRoute, modernLoader, revalidationState)
368
- };
369
- if (route.inValidSSRRoute) base.ssr = false;
370
- if (shouldReload) base.shouldReload = shouldReload;
371
- if (isPathlessLayout) base.id = stableFallbackId || 'pathless';
372
- else {
373
- const rawPath = route.path;
374
- base.path = isIndexRoute ? '/' : toTanstackPath(rawPath || '');
375
- }
376
- const tanstackRoute = createTanstackRoute(base);
377
- wrapRouteComponentWithModernContext(tanstackRoute, component, modernId);
378
- const children = route.children;
379
- if (children && children.length > 0) {
380
- const childRoutes = children.map((child)=>createRouteFromModernRoute({
381
- parent: tanstackRoute,
382
- modernRoute: child
383
- }));
384
- tanstackRoute.addChildren(childRoutes);
385
- }
386
- return tanstackRoute;
387
- }
388
- function createRouteTreeFromModernRoutes(routes) {
389
- const rootModern = routes.find((r)=>r && 'nested' === r.type && r.isRoot);
390
- const rootComponent = rootModern ? toModernRouteComponent(rootModern) : void 0;
391
- const pendingComponent = rootModern?.loading;
392
- const errorComponent = rootModern?.error;
393
- const rootLoader = rootModern?.loader;
394
- const rootAction = rootModern?.action;
395
- const rootModernId = rootModern?.id;
396
- const rootShouldRevalidate = rootModern?.shouldRevalidate;
397
- const rootRevalidationState = {};
398
- const rootShouldReload = createModernShouldReload(rootShouldRevalidate, rootRevalidationState);
399
- const rootRouteOptions = {
400
- component: rootComponent || void 0,
401
- pendingComponent: pendingComponent || void 0,
402
- errorComponent: errorComponent || void 0,
403
- notFoundComponent: DefaultNotFound,
404
- staticData: createRouteStaticData({
405
- modernRouteId: rootModernId,
406
- modernRouteAction: rootAction,
407
- modernRouteHandle: rootModern ? mergeModernRouteHandle(rootModern) : void 0,
408
- modernRouteHasAction: rootModern?.hasAction || Boolean(rootAction),
409
- modernRouteHasClientLoader: rootModern?.hasClientLoader || void 0 !== rootModern?.clientData,
410
- modernRouteHasLoader: rootModern?.hasLoader || 'function' == typeof rootLoader,
411
- modernRouteIsClientComponent: rootModern?.isClientComponent,
412
- modernRouteLoader: rootLoader,
413
- modernRouteShouldRevalidate: rootShouldRevalidate
414
- }),
415
- loader: rootModern ? wrapModernLoader(rootModern, rootLoader, rootRevalidationState) : void 0
416
- };
417
- if (rootShouldReload) rootRouteOptions.shouldReload = rootShouldReload;
418
- if (rootModern?.inValidSSRRoute) rootRouteOptions.ssr = false;
419
- const rootRoute = createTanstackRootRoute(rootRouteOptions);
420
- if (rootComponent) rootRoute.options.component = withModernRouteMatchContext(rootComponent, rootRouteId);
421
- const topLevel = rootModern ? rootModern.children || [] : routes;
422
- const childRoutes = topLevel.map((child)=>createRouteFromModernRoute({
423
- parent: rootRoute,
424
- modernRoute: child
425
- }));
426
- rootRoute.addChildren(childRoutes);
427
- return rootRoute;
428
- }
429
- function getRootLikeRouteObject(routes) {
430
- return routes.find((route)=>'/' === route.path && !route.index);
431
- }
432
- function createRouteTreeFromRouteObjects(routes) {
433
- const rootLikeRoute = getRootLikeRouteObject(routes);
434
- const rootRevalidationState = {};
435
- const rootShouldRevalidate = rootLikeRoute?.shouldRevalidate;
436
- const rootShouldReload = createModernShouldReload(rootShouldRevalidate, rootRevalidationState);
437
- const rootComponent = rootLikeRoute ? toRouteComponent(rootLikeRoute) : void 0;
438
- const rootRouteOptions = {
439
- component: rootComponent,
440
- pendingComponent: rootLikeRoute ? toPendingComponent(rootLikeRoute) : void 0,
441
- errorComponent: rootLikeRoute ? toErrorComponent(rootLikeRoute) : void 0,
442
- notFoundComponent: DefaultNotFound,
443
- staticData: createRouteStaticData({
444
- modernRouteId: rootLikeRoute?.id,
445
- modernRouteAction: rootLikeRoute?.action,
446
- modernRouteHandle: rootLikeRoute ? mergeModernRouteHandle(rootLikeRoute) : void 0,
447
- modernRouteHasAction: rootLikeRoute?.hasAction || Boolean(rootLikeRoute?.action),
448
- modernRouteHasClientLoader: rootLikeRoute?.hasClientLoader || void 0 !== rootLikeRoute?.clientData,
449
- modernRouteHasLoader: rootLikeRoute?.hasLoader || 'function' == typeof rootLikeRoute?.loader,
450
- modernRouteIsClientComponent: rootLikeRoute?.isClientComponent,
451
- modernRouteLoader: rootLikeRoute?.loader,
452
- modernRouteShouldRevalidate: rootShouldRevalidate
453
- }),
454
- loader: rootLikeRoute ? wrapRouteObjectLoader(rootLikeRoute, rootRevalidationState) : void 0
455
- };
456
- if (rootShouldReload) rootRouteOptions.shouldReload = rootShouldReload;
457
- if (rootLikeRoute?.inValidSSRRoute) rootRouteOptions.ssr = false;
458
- const rootRoute = createTanstackRootRoute(rootRouteOptions);
459
- if (rootComponent) rootRoute.options.component = withModernRouteMatchContext(rootComponent, rootRouteId);
460
- const topLevel = rootLikeRoute ? [
461
- ...rootLikeRoute.children || [],
462
- ...routes.filter((route)=>route !== rootLikeRoute)
463
- ] : routes;
464
- const childRoutes = topLevel.map((routeObject)=>createRouteFromRouteObject({
465
- parent: rootRoute,
466
- routeObject
467
- }));
468
- rootRoute.addChildren(childRoutes);
469
- return rootRoute;
470
- }
471
- function getModernRouteIdsFromMatches(router) {
472
- const matches = router.state.matches || [];
473
- const routesById = router.routesById;
474
- const ids = matches.map((match)=>{
475
- const normalizedMatch = match;
476
- const routeId = 'string' == typeof normalizedMatch.routeId ? normalizedMatch.routeId : void 0;
477
- return normalizedMatch.route?.options?.staticData?.modernRouteId ?? (routeId ? routesById?.[routeId]?.options?.staticData?.modernRouteId : void 0);
478
- }).filter((id)=>'string' == typeof id);
479
- return Array.from(new Set(ids));
480
- }
481
- export { createRouteTreeFromModernRoutes, createRouteTreeFromRouteObjects, getModernRouteIdsFromMatches };
@@ -1,19 +0,0 @@
1
- "use client";
2
- import { Fragment, jsx } from "react/jsx-runtime";
3
- import { useSlotContext } from "./SlotContext.mjs";
4
- function ClientSlot({ args, slot }) {
5
- const context = useSlotContext();
6
- if (!context) throw new Error('ClientSlot must be rendered inside CompositeComponent.');
7
- const implementation = context.implementations[slot];
8
- if (void 0 === implementation) {
9
- if (context.strict) throw new Error(`Missing RSC slot implementation for "${slot}".`);
10
- return null;
11
- }
12
- if ('function' == typeof implementation) return /*#__PURE__*/ jsx(Fragment, {
13
- children: implementation(...args)
14
- });
15
- return /*#__PURE__*/ jsx(Fragment, {
16
- children: implementation
17
- });
18
- }
19
- export { ClientSlot };
@@ -1,41 +0,0 @@
1
- "use client";
2
- import { jsx } from "react/jsx-runtime";
3
- import { Suspense } from "react";
4
- import { SlotProvider } from "./SlotContext.mjs";
5
- import { RSC_PROXY_GET_TREE, RSC_PROXY_PATH } from "./symbols.mjs";
6
- function EmptyFallback() {
7
- return null;
8
- }
9
- function selectTreePath(tree, path) {
10
- let current = tree;
11
- for (const key of path){
12
- if (null === current || 'object' != typeof current) return null;
13
- current = current[key];
14
- }
15
- return current;
16
- }
17
- function CompositeInner({ slotProps, src, strict }) {
18
- const getTree = src[RSC_PROXY_GET_TREE];
19
- if (!getTree) throw new Error('CompositeComponent src must come from createCompositeComponent().');
20
- const tree = selectTreePath(getTree(), src[RSC_PROXY_PATH] || []);
21
- return /*#__PURE__*/ jsx(SlotProvider, {
22
- implementations: slotProps,
23
- strict: strict,
24
- children: tree
25
- });
26
- }
27
- function CompositeComponent(props) {
28
- const { children, src, strict, ...slotProps } = props;
29
- return /*#__PURE__*/ jsx(Suspense, {
30
- fallback: /*#__PURE__*/ jsx(EmptyFallback, {}),
31
- children: /*#__PURE__*/ jsx(CompositeInner, {
32
- slotProps: {
33
- ...slotProps,
34
- children
35
- },
36
- src: src,
37
- strict: strict
38
- })
39
- });
40
- }
41
- export { CompositeComponent };
@@ -1,104 +0,0 @@
1
- const REPLAYABLE_STREAM_MARKER = Symbol.for('modern.tanstack.rsc.ReplayableStream');
2
- class ReplayableStream {
3
- start() {
4
- const signal = this.options.signal;
5
- if (signal?.aborted) return void this.release();
6
- this.abortListener = ()=>this.release();
7
- signal?.addEventListener('abort', this.abortListener, {
8
- once: true
9
- });
10
- const reader = this.source.getReader();
11
- this.reader = reader;
12
- const pump = async ()=>{
13
- try {
14
- while(!this.released){
15
- const { done, value } = await reader.read();
16
- if (done) break;
17
- this.chunks.push(value);
18
- this.notify();
19
- }
20
- } catch (err) {
21
- if (!this.released) this.error = err;
22
- } finally{
23
- this.done = true;
24
- this.detachAbortListener();
25
- try {
26
- reader.releaseLock();
27
- } catch {}
28
- if (this.reader === reader) this.reader = null;
29
- this.notify();
30
- }
31
- };
32
- pump();
33
- }
34
- detachAbortListener() {
35
- const signal = this.options.signal;
36
- if (signal && this.abortListener) signal.removeEventListener('abort', this.abortListener);
37
- this.abortListener = null;
38
- }
39
- notify() {
40
- this.waiter?.resolve();
41
- this.waiter = null;
42
- }
43
- wait() {
44
- if (this.done || this.released) return Promise.resolve();
45
- if (!this.waiter) {
46
- let resolve;
47
- const promise = new Promise((res)=>{
48
- resolve = res;
49
- });
50
- this.waiter = {
51
- promise,
52
- resolve
53
- };
54
- }
55
- return this.waiter.promise;
56
- }
57
- release() {
58
- if (this.released) return;
59
- this.released = true;
60
- this.chunks = [];
61
- this.detachAbortListener();
62
- try {
63
- this.reader?.cancel(new Error('ReplayableStream released'));
64
- } catch {}
65
- this.notify();
66
- }
67
- isReleased() {
68
- return this.released;
69
- }
70
- createReplayStream() {
71
- if (this.released) return new ReadableStream({
72
- start (controller) {
73
- controller.close();
74
- }
75
- });
76
- let index = 0;
77
- return new ReadableStream({
78
- pull: async (controller)=>{
79
- while(true){
80
- if (index < this.chunks.length) return void controller.enqueue(this.chunks[index++]);
81
- if (this.error) return void controller.error(this.error);
82
- if (this.done || this.released) return void controller.close();
83
- await this.wait();
84
- }
85
- },
86
- cancel: ()=>{}
87
- });
88
- }
89
- constructor(source, options = {}){
90
- this.source = source;
91
- this.options = options;
92
- this[_REPLAYABLE_STREAM_MARKER] = true;
93
- this.chunks = [];
94
- this.done = false;
95
- this.waiter = null;
96
- this.released = false;
97
- this.reader = null;
98
- this.abortListener = null;
99
- this.start();
100
- }
101
- }
102
- _REPLAYABLE_STREAM_MARKER = REPLAYABLE_STREAM_MARKER;
103
- var _REPLAYABLE_STREAM_MARKER;
104
- export { REPLAYABLE_STREAM_MARKER, ReplayableStream };
@@ -1,31 +0,0 @@
1
- "use client";
2
- import { Fragment, jsx } from "react/jsx-runtime";
3
- import { Suspense } from "react";
4
- import { RSC_PROXY_GET_TREE, RSC_PROXY_PATH } from "./symbols.mjs";
5
- function EmptyFallback() {
6
- return null;
7
- }
8
- function selectTreePath(tree, path) {
9
- let current = tree;
10
- for (const key of path){
11
- if (null === current || 'object' != typeof current) return null;
12
- current = current[key];
13
- }
14
- return current;
15
- }
16
- function RscNodeRenderInner({ data }) {
17
- const getTree = data[RSC_PROXY_GET_TREE];
18
- if (!getTree) throw new Error('Renderable RSC is missing its decoded tree getter.');
19
- return /*#__PURE__*/ jsx(Fragment, {
20
- children: selectTreePath(getTree(), data[RSC_PROXY_PATH] || [])
21
- });
22
- }
23
- function RscNodeRenderer({ data }) {
24
- return /*#__PURE__*/ jsx(Suspense, {
25
- fallback: /*#__PURE__*/ jsx(EmptyFallback, {}),
26
- children: /*#__PURE__*/ jsx(RscNodeRenderInner, {
27
- data: data
28
- })
29
- });
30
- }
31
- export { RscNodeRenderer };