@bleedingdev/modern-js-plugin-tanstack 3.5.0-ultramodern.9 → 3.5.0-ultramodern.91
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.
- package/dist/cjs/cli/artifacts.js +157 -0
- package/dist/cjs/cli/index.js +8 -79
- package/dist/cjs/cli/tanstackTypes/canonicalRoutes.js +113 -0
- package/dist/cjs/cli/tanstackTypes/shared.js +123 -0
- package/dist/cjs/cli/tanstackTypes/source.js +255 -0
- package/dist/cjs/cli/tanstackTypes.js +4 -350
- package/dist/cjs/runtime/blockingSubscribe.js +57 -0
- package/dist/cjs/runtime/{pluginCore.js → clientBasepath.js} +12 -19
- package/dist/cjs/runtime/clientHydration.js +118 -0
- package/dist/cjs/runtime/dataMutation.js +11 -176
- package/dist/cjs/runtime/formData.js +116 -0
- package/dist/cjs/runtime/loaderBridge.js +7 -11
- package/dist/cjs/runtime/plugin.js +21 -125
- package/dist/cjs/runtime/plugin.node.js +45 -125
- package/dist/cjs/runtime/pluginShared.js +87 -0
- package/dist/cjs/runtime/prefetchLink.js +15 -2
- package/dist/cjs/runtime/register.js +3 -16
- package/dist/cjs/runtime/routeTree/components.js +102 -0
- package/dist/cjs/runtime/routeTree/construction.js +152 -0
- package/dist/cjs/runtime/routeTree/index.js +47 -0
- package/dist/cjs/runtime/routeTree/loaders.js +158 -0
- package/dist/cjs/runtime/routeTree/paths.js +57 -0
- package/dist/cjs/runtime/routeTree/staticData.js +63 -0
- package/dist/cjs/runtime/routeTree/tanstackRoutes.js +57 -0
- package/dist/cjs/runtime/routeTree/types.js +18 -0
- package/dist/cjs/runtime/routeTree.js +7 -320
- package/dist/cjs/runtime/router.js +15 -2
- package/dist/cjs/runtime/rsc/CompositeComponent.js +18 -13
- package/dist/cjs/runtime/rsc/ReplayableStream.js +0 -4
- package/dist/cjs/runtime/rsc/RscNodeRenderer.js +5 -16
- package/dist/cjs/runtime/rsc/client.js +8 -25
- package/dist/cjs/runtime/rsc/flightSerialization.js +132 -0
- package/dist/cjs/runtime/rsc/payloadErrors.js +99 -0
- package/dist/cjs/runtime/rsc/payloadFetch.js +105 -0
- package/dist/cjs/runtime/rsc/payloadRouter.js +21 -142
- package/dist/cjs/runtime/rsc/payloadRoutes.js +94 -0
- package/dist/cjs/runtime/rsc/payloadStorage.js +58 -0
- package/dist/cjs/runtime/rsc/server.js +14 -18
- package/dist/cjs/runtime/rsc/shared.js +68 -0
- package/dist/cjs/runtime/rsc/slotUsageSanitizer.js +1 -0
- package/dist/cjs/runtime/rsc/treeGetter.js +72 -0
- package/dist/cjs/runtime/shared/isAbsoluteUrl.js +47 -0
- package/dist/cjs/runtime/ssrManagedTags.js +103 -0
- package/dist/cjs/runtime/ssrPreload.js +89 -0
- package/dist/cjs/runtime/ssrTypes.js +18 -0
- package/dist/cjs/runtime/state.js +1 -1
- package/dist/cjs/runtime/submitAction.js +161 -0
- package/dist/cjs/runtime/utils.js +49 -86
- package/dist/esm/cli/artifacts.mjs +103 -0
- package/dist/esm/cli/index.mjs +8 -82
- package/dist/esm/cli/tanstackTypes/canonicalRoutes.mjs +75 -0
- package/dist/esm/cli/tanstackTypes/shared.mjs +61 -0
- package/dist/esm/cli/tanstackTypes/source.mjs +207 -0
- package/dist/esm/cli/tanstackTypes.mjs +2 -339
- package/dist/esm/runtime/blockingSubscribe.mjs +19 -0
- package/dist/esm/runtime/clientBasepath.mjs +10 -0
- package/dist/esm/runtime/clientHydration.mjs +71 -0
- package/dist/esm/runtime/dataMutation.mjs +2 -167
- package/dist/esm/runtime/formData.mjs +63 -0
- package/dist/esm/runtime/loaderBridge.mjs +5 -9
- package/dist/esm/runtime/plugin.mjs +14 -118
- package/dist/esm/runtime/plugin.node.mjs +41 -121
- package/dist/esm/runtime/pluginShared.mjs +40 -0
- package/dist/esm/runtime/prefetchLink.mjs +18 -5
- package/dist/esm/runtime/register.mjs +1 -14
- package/dist/esm/runtime/routeTree/components.mjs +55 -0
- package/dist/esm/runtime/routeTree/construction.mjs +111 -0
- package/dist/esm/runtime/routeTree/index.mjs +2 -0
- package/dist/esm/runtime/routeTree/loaders.mjs +117 -0
- package/dist/esm/runtime/routeTree/paths.mjs +16 -0
- package/dist/esm/runtime/routeTree/staticData.mjs +22 -0
- package/dist/esm/runtime/routeTree/tanstackRoutes.mjs +13 -0
- package/dist/esm/runtime/routeTree/types.mjs +0 -0
- package/dist/esm/runtime/routeTree.mjs +1 -318
- package/dist/esm/runtime/router.mjs +16 -2
- package/dist/esm/runtime/rsc/CompositeComponent.mjs +18 -13
- package/dist/esm/runtime/rsc/ReplayableStream.mjs +1 -1
- package/dist/esm/runtime/rsc/RscNodeRenderer.mjs +4 -15
- package/dist/esm/runtime/rsc/client.mjs +6 -26
- package/dist/esm/runtime/rsc/flightSerialization.mjs +88 -0
- package/dist/esm/runtime/rsc/payloadErrors.mjs +49 -0
- package/dist/esm/runtime/rsc/payloadFetch.mjs +55 -0
- package/dist/esm/runtime/rsc/payloadRouter.mjs +12 -133
- package/dist/esm/runtime/rsc/payloadRoutes.mjs +50 -0
- package/dist/esm/runtime/rsc/payloadStorage.mjs +14 -0
- package/dist/esm/runtime/rsc/server.mjs +17 -21
- package/dist/esm/runtime/rsc/shared.mjs +21 -0
- package/dist/esm/runtime/rsc/slotUsageSanitizer.mjs +1 -0
- package/dist/esm/runtime/rsc/treeGetter.mjs +34 -0
- package/dist/esm/runtime/shared/isAbsoluteUrl.mjs +9 -0
- package/dist/esm/runtime/ssrManagedTags.mjs +53 -0
- package/dist/esm/runtime/ssrPreload.mjs +51 -0
- package/dist/esm/runtime/ssrTypes.mjs +0 -0
- package/dist/esm/runtime/state.mjs +1 -1
- package/dist/esm/runtime/submitAction.mjs +120 -0
- package/dist/esm/runtime/utils.mjs +47 -75
- package/dist/esm-node/cli/artifacts.mjs +104 -0
- package/dist/esm-node/cli/index.mjs +8 -82
- package/dist/esm-node/cli/tanstackTypes/canonicalRoutes.mjs +76 -0
- package/dist/esm-node/cli/tanstackTypes/shared.mjs +62 -0
- package/dist/esm-node/cli/tanstackTypes/source.mjs +208 -0
- package/dist/esm-node/cli/tanstackTypes.mjs +2 -339
- package/dist/esm-node/runtime/blockingSubscribe.mjs +20 -0
- package/dist/esm-node/runtime/clientBasepath.mjs +11 -0
- package/dist/esm-node/runtime/clientHydration.mjs +72 -0
- package/dist/esm-node/runtime/dataMutation.mjs +2 -167
- package/dist/esm-node/runtime/formData.mjs +64 -0
- package/dist/esm-node/runtime/loaderBridge.mjs +5 -9
- package/dist/esm-node/runtime/plugin.mjs +14 -118
- package/dist/esm-node/runtime/plugin.node.mjs +41 -121
- package/dist/esm-node/runtime/pluginShared.mjs +41 -0
- package/dist/esm-node/runtime/prefetchLink.mjs +18 -5
- package/dist/esm-node/runtime/register.mjs +1 -14
- package/dist/esm-node/runtime/routeTree/components.mjs +56 -0
- package/dist/esm-node/runtime/routeTree/construction.mjs +112 -0
- package/dist/esm-node/runtime/routeTree/index.mjs +3 -0
- package/dist/esm-node/runtime/routeTree/loaders.mjs +118 -0
- package/dist/esm-node/runtime/routeTree/paths.mjs +17 -0
- package/dist/esm-node/runtime/routeTree/staticData.mjs +23 -0
- package/dist/esm-node/runtime/routeTree/tanstackRoutes.mjs +14 -0
- package/dist/esm-node/runtime/routeTree/types.mjs +1 -0
- package/dist/esm-node/runtime/routeTree.mjs +1 -318
- package/dist/esm-node/runtime/router.mjs +16 -2
- package/dist/esm-node/runtime/rsc/CompositeComponent.mjs +18 -13
- package/dist/esm-node/runtime/rsc/ReplayableStream.mjs +1 -1
- package/dist/esm-node/runtime/rsc/RscNodeRenderer.mjs +4 -15
- package/dist/esm-node/runtime/rsc/client.mjs +6 -26
- package/dist/esm-node/runtime/rsc/flightSerialization.mjs +89 -0
- package/dist/esm-node/runtime/rsc/payloadErrors.mjs +50 -0
- package/dist/esm-node/runtime/rsc/payloadFetch.mjs +56 -0
- package/dist/esm-node/runtime/rsc/payloadRouter.mjs +12 -133
- package/dist/esm-node/runtime/rsc/payloadRoutes.mjs +51 -0
- package/dist/esm-node/runtime/rsc/payloadStorage.mjs +15 -0
- package/dist/esm-node/runtime/rsc/server.mjs +17 -21
- package/dist/esm-node/runtime/rsc/shared.mjs +22 -0
- package/dist/esm-node/runtime/rsc/slotUsageSanitizer.mjs +1 -0
- package/dist/esm-node/runtime/rsc/treeGetter.mjs +35 -0
- package/dist/esm-node/runtime/shared/isAbsoluteUrl.mjs +10 -0
- package/dist/esm-node/runtime/ssrManagedTags.mjs +54 -0
- package/dist/esm-node/runtime/ssrPreload.mjs +52 -0
- package/dist/esm-node/runtime/ssrTypes.mjs +1 -0
- package/dist/esm-node/runtime/state.mjs +1 -1
- package/dist/esm-node/runtime/submitAction.mjs +121 -0
- package/dist/esm-node/runtime/utils.mjs +47 -75
- package/dist/types/cli/artifacts.d.ts +33 -0
- package/dist/types/cli/index.d.ts +2 -22
- package/dist/types/cli/tanstackTypes/canonicalRoutes.d.ts +22 -0
- package/dist/types/cli/tanstackTypes/shared.d.ts +20 -0
- package/dist/types/cli/tanstackTypes/source.d.ts +12 -0
- package/dist/types/cli/tanstackTypes.d.ts +3 -31
- package/dist/types/runtime/blockingSubscribe.d.ts +1 -0
- package/dist/types/runtime/clientBasepath.d.ts +1 -0
- package/dist/types/runtime/clientHydration.d.ts +10 -0
- package/dist/types/runtime/dataMutation.d.ts +3 -12
- package/dist/types/runtime/formData.d.ts +24 -0
- package/dist/types/runtime/loaderBridge.d.ts +2 -1
- package/dist/types/runtime/plugin.d.ts +1 -1
- package/dist/types/runtime/plugin.node.d.ts +1 -1
- package/dist/types/runtime/pluginShared.d.ts +38 -0
- package/dist/types/runtime/register.d.ts +10 -9
- package/dist/types/runtime/routeTree/components.d.ts +7 -0
- package/dist/types/runtime/routeTree/construction.d.ts +5 -0
- package/dist/types/runtime/routeTree/index.d.ts +2 -0
- package/dist/types/runtime/routeTree/loaders.d.ts +4 -0
- package/dist/types/runtime/routeTree/paths.d.ts +3 -0
- package/dist/types/runtime/routeTree/staticData.d.ts +19 -0
- package/dist/types/runtime/routeTree/tanstackRoutes.d.ts +4 -0
- package/dist/types/runtime/routeTree/types.d.ts +76 -0
- package/dist/types/runtime/routeTree.d.ts +1 -9
- package/dist/types/runtime/router.d.ts +6 -7
- package/dist/types/runtime/rsc/CompositeComponent.d.ts +1 -2
- package/dist/types/runtime/rsc/ReplayableStream.d.ts +3 -2
- package/dist/types/runtime/rsc/RscNodeRenderer.d.ts +2 -3
- package/dist/types/runtime/rsc/SlotContext.d.ts +2 -1
- package/dist/types/runtime/rsc/client.d.ts +2 -0
- package/dist/types/runtime/rsc/flightSerialization.d.ts +3 -0
- package/dist/types/runtime/rsc/payloadErrors.d.ts +6 -0
- package/dist/types/runtime/rsc/payloadFetch.d.ts +8 -0
- package/dist/types/runtime/rsc/payloadRouter.d.ts +2 -10
- package/dist/types/runtime/rsc/payloadRoutes.d.ts +40 -0
- package/dist/types/runtime/rsc/payloadStorage.d.ts +5 -0
- package/dist/types/runtime/rsc/shared.d.ts +18 -0
- package/dist/types/runtime/rsc/treeGetter.d.ts +1 -0
- package/dist/types/runtime/shared/isAbsoluteUrl.d.ts +1 -0
- package/dist/types/runtime/ssrManagedTags.d.ts +7 -0
- package/dist/types/runtime/ssrPreload.d.ts +2 -0
- package/dist/types/runtime/ssrTypes.d.ts +44 -0
- package/dist/types/runtime/state.d.ts +1 -1
- package/dist/types/runtime/submitAction.d.ts +14 -0
- package/dist/types/runtime/types.d.ts +4 -10
- package/dist/types/runtime/utils.d.ts +4 -24
- package/package.json +37 -17
- package/rstest.config.mts +23 -0
- package/src/cli/artifacts.ts +255 -0
- package/src/cli/index.ts +7 -185
- package/src/cli/tanstackTypes/canonicalRoutes.ts +157 -0
- package/src/cli/tanstackTypes/shared.ts +113 -0
- package/src/cli/tanstackTypes/source.ts +414 -0
- package/src/cli/tanstackTypes.ts +4 -647
- package/src/runtime/blockingSubscribe.ts +48 -0
- package/src/runtime/clientBasepath.ts +12 -0
- package/src/runtime/clientHydration.ts +149 -0
- package/src/runtime/dataMutation.tsx +9 -306
- package/src/runtime/formData.ts +153 -0
- package/src/runtime/loaderBridge.ts +11 -12
- package/src/runtime/plugin.node.tsx +76 -291
- package/src/runtime/plugin.tsx +21 -257
- package/src/runtime/pluginShared.ts +112 -0
- package/src/runtime/prefetchLink.tsx +78 -15
- package/src/runtime/register.ts +10 -42
- package/src/runtime/routeTree/components.ts +130 -0
- package/src/runtime/routeTree/construction.ts +238 -0
- package/src/runtime/routeTree/index.ts +7 -0
- package/src/runtime/routeTree/loaders.ts +232 -0
- package/src/runtime/routeTree/paths.ts +36 -0
- package/src/runtime/routeTree/staticData.ts +66 -0
- package/src/runtime/routeTree/tanstackRoutes.ts +36 -0
- package/src/runtime/routeTree/types.ts +87 -0
- package/src/runtime/routeTree.ts +5 -750
- package/src/runtime/router.ts +35 -7
- package/src/runtime/rsc/CompositeComponent.tsx +29 -20
- package/src/runtime/rsc/ReplayableStream.ts +2 -2
- package/src/runtime/rsc/RscNodeRenderer.tsx +9 -27
- package/src/runtime/rsc/SlotContext.tsx +1 -1
- package/src/runtime/rsc/client.tsx +12 -40
- package/src/runtime/rsc/flightSerialization.ts +158 -0
- package/src/runtime/rsc/payloadErrors.ts +73 -0
- package/src/runtime/rsc/payloadFetch.ts +92 -0
- package/src/runtime/rsc/payloadRouter.ts +29 -234
- package/src/runtime/rsc/payloadRoutes.ts +122 -0
- package/src/runtime/rsc/payloadStorage.ts +35 -0
- package/src/runtime/rsc/server.tsx +20 -29
- package/src/runtime/rsc/shared.ts +70 -0
- package/src/runtime/rsc/slotUsageSanitizer.ts +4 -0
- package/src/runtime/rsc/treeGetter.tsx +52 -0
- package/src/runtime/shared/isAbsoluteUrl.ts +8 -0
- package/src/runtime/ssrManagedTags.ts +107 -0
- package/src/runtime/ssrPreload.ts +125 -0
- package/src/runtime/ssrTypes.ts +51 -0
- package/src/runtime/state.ts +9 -3
- package/src/runtime/submitAction.ts +201 -0
- package/src/runtime/types.ts +4 -18
- package/src/runtime/utils.tsx +76 -110
- package/src/types/react-server-dom-rspack.d.ts +56 -0
- package/tests/castRatchet.test.ts +85 -0
- package/tests/realm-isolation.test.ts +114 -0
- package/tests/router/cli.test.ts +7 -0
- package/tests/router/clientHydration.test.tsx +61 -0
- package/tests/router/dataMutation.test.tsx +59 -0
- package/tests/router/fixtures/legacyRuntimeRouter.ts +10 -0
- package/tests/router/fixtures/router-gen.golden.txt +71 -0
- package/tests/router/fixtures/router-gen.oxlint.json +5 -0
- package/tests/router/flightSerialization.roundtrip.test.tsx +137 -0
- package/tests/router/generateRouteArtifacts.test.ts +106 -0
- package/tests/router/hooks.test.ts +14 -0
- package/tests/router/loaderBridge.test.ts +21 -0
- package/tests/router/prefetchLink.test.tsx +106 -59
- package/tests/router/prefetchLinkPreload.test.tsx +85 -0
- package/tests/router/register.test.ts +1 -39
- package/tests/router/routeTree.test.ts +51 -11
- package/tests/router/routerCompatibility.test.ts +245 -0
- package/tests/router/rsc.test.tsx +189 -0
- package/tests/router/rscPayloadRouterMatrix.test.ts +197 -0
- package/tests/router/slotUsageSanitizer.test.ts +23 -0
- package/tests/router/ssrPreload.test.ts +30 -0
- package/tests/router/tanstackTypes.test.ts +298 -1
- package/dist/esm/runtime/pluginCore.mjs +0 -14
- package/dist/esm-node/runtime/pluginCore.mjs +0 -15
- package/dist/types/runtime/pluginCore.d.ts +0 -21
- package/src/runtime/pluginCore.ts +0 -48
|
@@ -37,103 +37,66 @@ var __webpack_require__ = {};
|
|
|
37
37
|
var __webpack_exports__ = {};
|
|
38
38
|
__webpack_require__.r(__webpack_exports__);
|
|
39
39
|
__webpack_require__.d(__webpack_exports__, {
|
|
40
|
-
|
|
41
|
-
getRouteObjects: ()=>getRouteObjects,
|
|
42
|
-
standardSlash: ()=>standardSlash,
|
|
43
|
-
urlJoin: ()=>urlJoin
|
|
40
|
+
createTanstackRouteObjectsFromConfig: ()=>createTanstackRouteObjectsFromConfig
|
|
44
41
|
});
|
|
45
42
|
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
|
|
46
43
|
const external_react_namespaceObject = require("react");
|
|
47
44
|
var external_react_default = /*#__PURE__*/ __webpack_require__.n(external_react_namespaceObject);
|
|
48
|
-
function
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
...props
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
return LayoutWrapper;
|
|
45
|
+
function withGlobalLayout(Component, globalApp) {
|
|
46
|
+
if (!globalApp) return Component;
|
|
47
|
+
const GlobalLayout = globalApp;
|
|
48
|
+
return function(props) {
|
|
49
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(GlobalLayout, {
|
|
50
|
+
Component: Component,
|
|
51
|
+
...props
|
|
52
|
+
});
|
|
60
53
|
};
|
|
61
|
-
const routeObjects = [];
|
|
62
|
-
for (const route of routes)if ('nested' === route.type) {
|
|
63
|
-
const nestedRouteObject = {
|
|
64
|
-
path: route.path,
|
|
65
|
-
id: route.id,
|
|
66
|
-
loader: route.loader,
|
|
67
|
-
action: route.action,
|
|
68
|
-
shouldRevalidate: route.shouldRevalidate,
|
|
69
|
-
handle: {
|
|
70
|
-
...route.handle,
|
|
71
|
-
...'object' == typeof route.config ? route.config?.handle : {}
|
|
72
|
-
},
|
|
73
|
-
index: route.index,
|
|
74
|
-
hasLoader: Boolean(route.loader),
|
|
75
|
-
hasClientLoader: Boolean(route.clientData),
|
|
76
|
-
hasAction: Boolean(route.action),
|
|
77
|
-
...route.isClientComponent ? {
|
|
78
|
-
isClientComponent: true
|
|
79
|
-
} : {},
|
|
80
|
-
...route.inValidSSRRoute ? {
|
|
81
|
-
inValidSSRRoute: true
|
|
82
|
-
} : {},
|
|
83
|
-
lazyImport: route.lazyImport,
|
|
84
|
-
Component: route.component ? route.component : void 0,
|
|
85
|
-
errorElement: route.error ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(route.error, {}) : void 0,
|
|
86
|
-
children: route.children ? route.children.map((child)=>getRouteObjects([
|
|
87
|
-
child
|
|
88
|
-
], {
|
|
89
|
-
globalApp,
|
|
90
|
-
ssrMode,
|
|
91
|
-
props
|
|
92
|
-
})[0]) : void 0
|
|
93
|
-
};
|
|
94
|
-
routeObjects.push(nestedRouteObject);
|
|
95
|
-
} else if ('function' == typeof route.component || 'object' == typeof route.component) {
|
|
96
|
-
const LayoutComponent = createLayoutElement(route.component);
|
|
97
|
-
const routeObject = {
|
|
98
|
-
path: route.path,
|
|
99
|
-
element: /*#__PURE__*/ external_react_default().createElement(LayoutComponent)
|
|
100
|
-
};
|
|
101
|
-
routeObjects.push(routeObject);
|
|
102
|
-
}
|
|
103
|
-
return routeObjects;
|
|
104
54
|
}
|
|
105
|
-
function
|
|
55
|
+
function getRouteHandle(route) {
|
|
56
|
+
return {
|
|
57
|
+
...route.handle,
|
|
58
|
+
...'object' == typeof route.config ? route.config?.handle : {}
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function toTanstackRouteObject(route, globalApp) {
|
|
62
|
+
if ('nested' === route.type) return {
|
|
63
|
+
path: route.path,
|
|
64
|
+
id: route.id,
|
|
65
|
+
loader: route.loader,
|
|
66
|
+
action: route.action,
|
|
67
|
+
shouldRevalidate: route.shouldRevalidate,
|
|
68
|
+
handle: getRouteHandle(route),
|
|
69
|
+
index: route.index,
|
|
70
|
+
hasLoader: route.hasLoader || Boolean(route.loader),
|
|
71
|
+
hasClientLoader: route.hasClientLoader || Boolean(route.clientData),
|
|
72
|
+
hasAction: route.hasAction || Boolean(route.action),
|
|
73
|
+
...route.isClientComponent ? {
|
|
74
|
+
isClientComponent: true
|
|
75
|
+
} : {},
|
|
76
|
+
...route.inValidSSRRoute ? {
|
|
77
|
+
inValidSSRRoute: true
|
|
78
|
+
} : {},
|
|
79
|
+
lazyImport: route.lazyImport,
|
|
80
|
+
Component: route.component ? route.component : void 0,
|
|
81
|
+
errorElement: route.error ? /*#__PURE__*/ external_react_default().createElement(route.error) : void 0,
|
|
82
|
+
children: route.children ? route.children.map((child)=>toTanstackRouteObject(child, globalApp)).filter((child)=>null !== child) : void 0
|
|
83
|
+
};
|
|
84
|
+
if ('function' != typeof route.component && 'object' != typeof route.component) return null;
|
|
85
|
+
const LayoutComponent = withGlobalLayout(route.component, globalApp);
|
|
86
|
+
return {
|
|
87
|
+
path: route.path,
|
|
88
|
+
element: /*#__PURE__*/ external_react_default().createElement(LayoutComponent)
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function createTanstackRouteObjectsFromConfig({ routesConfig }) {
|
|
106
92
|
if (!routesConfig) return null;
|
|
107
93
|
const { routes, globalApp } = routesConfig;
|
|
108
94
|
if (!routes) return null;
|
|
109
|
-
return
|
|
110
|
-
globalApp,
|
|
111
|
-
ssrMode,
|
|
112
|
-
props
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
const urlJoin = (...parts)=>{
|
|
116
|
-
const separator = '/';
|
|
117
|
-
const replace = new RegExp(`${separator}{1,}`, 'g');
|
|
118
|
-
return standardSlash(parts.join(separator).replace(replace, separator));
|
|
119
|
-
};
|
|
120
|
-
function standardSlash(str) {
|
|
121
|
-
let addr = str;
|
|
122
|
-
if (!addr || 'string' != typeof addr) return addr;
|
|
123
|
-
if (addr.startsWith('.')) addr = addr.slice(1);
|
|
124
|
-
if (!addr.startsWith('/')) addr = `/${addr}`;
|
|
125
|
-
if (addr.endsWith('/') && '/' !== addr) addr = addr.slice(0, addr.length - 1);
|
|
126
|
-
return addr;
|
|
95
|
+
return routes.map((route)=>toTanstackRouteObject(route, globalApp)).filter((route)=>null !== route);
|
|
127
96
|
}
|
|
128
|
-
exports.
|
|
129
|
-
exports.getRouteObjects = __webpack_exports__.getRouteObjects;
|
|
130
|
-
exports.standardSlash = __webpack_exports__.standardSlash;
|
|
131
|
-
exports.urlJoin = __webpack_exports__.urlJoin;
|
|
97
|
+
exports.createTanstackRouteObjectsFromConfig = __webpack_exports__.createTanstackRouteObjectsFromConfig;
|
|
132
98
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
133
|
-
"
|
|
134
|
-
"getRouteObjects",
|
|
135
|
-
"standardSlash",
|
|
136
|
-
"urlJoin"
|
|
99
|
+
"createTanstackRouteObjectsFromConfig"
|
|
137
100
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
138
101
|
Object.defineProperty(exports, '__esModule', {
|
|
139
102
|
value: true
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import node_path from "node:path";
|
|
2
|
+
import { fs } from "@modern-js/utils";
|
|
3
|
+
import { collectCanonicalRoutesForEntry, generateTanstackRouterTypesSourceForEntry } from "./tanstackTypes.mjs";
|
|
4
|
+
const DEFAULT_GENERATED_DIR_NAME = 'modern-tanstack';
|
|
5
|
+
async function writeFileIfChanged(filePath, content) {
|
|
6
|
+
try {
|
|
7
|
+
const previous = await fs.pathExists(filePath) ? await fs.readFile(filePath, 'utf-8') : null;
|
|
8
|
+
if (previous === content) return;
|
|
9
|
+
} catch {}
|
|
10
|
+
await fs.outputFile(filePath, content, 'utf-8');
|
|
11
|
+
}
|
|
12
|
+
function createRegisterDtsContent(opts) {
|
|
13
|
+
const importStatements = opts.entries.map((entryName, index)=>`import type { router as router${index} } from './${entryName}/router.gen';`).join('\n');
|
|
14
|
+
const routerUnionType = opts.entries.map((_, index)=>`typeof router${index}`).join(' | ');
|
|
15
|
+
const canonicalEntries = Object.entries(opts.canonicalRoutes ?? {});
|
|
16
|
+
const canonicalRoutesAugmentation = canonicalEntries.length > 0 ? `
|
|
17
|
+
declare module '${opts.i18nRuntimeModule || '@modern-js/plugin-i18n/runtime'}' {
|
|
18
|
+
interface UltramodernCanonicalRoutes {
|
|
19
|
+
${canonicalEntries.map(([routePath, paramsType])=>` '${routePath}': ${paramsType};`).join('\n')}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
` : '';
|
|
23
|
+
return `// This file is auto-generated by Modern.js. Do not edit manually.
|
|
24
|
+
|
|
25
|
+
${importStatements}
|
|
26
|
+
|
|
27
|
+
declare module '${opts.runtimeModule}' {
|
|
28
|
+
interface Register {
|
|
29
|
+
router: ${routerUnionType};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
${canonicalRoutesAugmentation}`;
|
|
33
|
+
}
|
|
34
|
+
async function writeTanstackRegisterFile(opts) {
|
|
35
|
+
const { entries, generatedDirName = DEFAULT_GENERATED_DIR_NAME, runtimeModule = '@modern-js/plugin-tanstack/runtime', srcDirectory, canonicalRoutes, i18nRuntimeModule } = opts;
|
|
36
|
+
if (0 === entries.length) return;
|
|
37
|
+
const registerDtsPath = node_path.join(srcDirectory, generatedDirName, 'register.gen.d.ts');
|
|
38
|
+
await writeFileIfChanged(registerDtsPath, createRegisterDtsContent({
|
|
39
|
+
entries,
|
|
40
|
+
runtimeModule,
|
|
41
|
+
canonicalRoutes,
|
|
42
|
+
i18nRuntimeModule
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
async function writeTanstackRouterTypesForEntries(opts) {
|
|
46
|
+
const { appContext, generatedDirName = DEFAULT_GENERATED_DIR_NAME, routesByEntry, i18nPluginInstalled = false } = opts;
|
|
47
|
+
const entryNames = Object.keys(routesByEntry);
|
|
48
|
+
await Promise.all(entryNames.map(async (entryName)=>{
|
|
49
|
+
const { routerGenTs } = await generateTanstackRouterTypesSourceForEntry({
|
|
50
|
+
appContext,
|
|
51
|
+
entryName,
|
|
52
|
+
generatedDirName,
|
|
53
|
+
routes: routesByEntry[entryName]
|
|
54
|
+
});
|
|
55
|
+
await writeFileIfChanged(node_path.join(appContext.srcDirectory, generatedDirName, entryName, 'router.gen.ts'), routerGenTs);
|
|
56
|
+
}));
|
|
57
|
+
const mainEntryName = appContext.entrypoints?.find((entrypoint)=>entrypoint.isMainEntry)?.entryName;
|
|
58
|
+
const registerEntries = entryNames.sort((a, b)=>{
|
|
59
|
+
if (mainEntryName && a === mainEntryName) return -1;
|
|
60
|
+
if (mainEntryName && b === mainEntryName) return 1;
|
|
61
|
+
return a.localeCompare(b);
|
|
62
|
+
});
|
|
63
|
+
let canonicalRoutes = null;
|
|
64
|
+
if (i18nPluginInstalled) for (const entryName of registerEntries){
|
|
65
|
+
const entryCanonicalRoutes = collectCanonicalRoutesForEntry(routesByEntry[entryName], {
|
|
66
|
+
localeParamHeuristic: true
|
|
67
|
+
});
|
|
68
|
+
if (entryCanonicalRoutes) canonicalRoutes = {
|
|
69
|
+
...entryCanonicalRoutes,
|
|
70
|
+
...canonicalRoutes ?? {}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
await writeTanstackRegisterFile({
|
|
74
|
+
entries: registerEntries,
|
|
75
|
+
generatedDirName,
|
|
76
|
+
srcDirectory: appContext.srcDirectory,
|
|
77
|
+
canonicalRoutes
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
async function generateTanstackRouteArtifacts(opts) {
|
|
81
|
+
const [{ createRunOptions }, { cli }, utils] = await Promise.all([
|
|
82
|
+
import("@modern-js/app-tools/cli/run"),
|
|
83
|
+
import("@modern-js/plugin/cli"),
|
|
84
|
+
import("@modern-js/utils")
|
|
85
|
+
]);
|
|
86
|
+
process.env.MODERN_ARGV = 'node modern build';
|
|
87
|
+
process.env.NODE_ENV = process.env.NODE_ENV || 'production';
|
|
88
|
+
const { findExists, CONFIG_FILE_EXTENSIONS } = utils;
|
|
89
|
+
const configFileBase = node_path.resolve(opts.appDirectory, 'modern.config');
|
|
90
|
+
const resolvedConfigFile = findExists(CONFIG_FILE_EXTENSIONS.map((extension)=>`${configFileBase}${extension}`));
|
|
91
|
+
if (!resolvedConfigFile) throw new Error(`[plugin-tanstack] Unable to locate a Modern.js config file (modern.config.{${CONFIG_FILE_EXTENSIONS.map((extension)=>extension.slice(1)).join(',')}}) in ${opts.appDirectory}. TanStack route generation requires the app config to resolve its plugins.`);
|
|
92
|
+
const runOptions = await createRunOptions({
|
|
93
|
+
cwd: opts.appDirectory,
|
|
94
|
+
configFile: configFileBase,
|
|
95
|
+
version: opts.version || process.env.MODERN_JS_VERSION || '0.0.0-routes-generate',
|
|
96
|
+
internalPlugins: utils.INTERNAL_RUNTIME_PLUGINS
|
|
97
|
+
});
|
|
98
|
+
await cli.init({
|
|
99
|
+
...runOptions,
|
|
100
|
+
command: 'build'
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
export { generateTanstackRouteArtifacts, writeTanstackRegisterFile, writeTanstackRouterTypesForEntries };
|
package/dist/esm/cli/index.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import node_path from "node:path";
|
|
2
|
-
import { NESTED_ROUTE_SPEC_FILE, filterRoutesForServer
|
|
2
|
+
import { NESTED_ROUTE_SPEC_FILE, filterRoutesForServer } from "@modern-js/utils";
|
|
3
|
+
import { generateTanstackRouteArtifacts, writeTanstackRegisterFile, writeTanstackRouterTypesForEntries } from "./artifacts.mjs";
|
|
3
4
|
import { createTanstackRsbuildRouteSplittingProfile, resolveTanstackRouteCodeSplittingEnabled } from "./routeSplitting.mjs";
|
|
4
|
-
import { collectCanonicalRoutesForEntry, generateTanstackRouterTypesSourceForEntry } from "./tanstackTypes.mjs";
|
|
5
5
|
import { __webpack_require__ } from "../rslib-runtime.mjs";
|
|
6
|
-
import * as
|
|
6
|
+
import * as __rspack_external__modern_js_runtime_cli_d0edd589 from "@modern-js/runtime/cli";
|
|
7
7
|
__webpack_require__.add({
|
|
8
|
-
|
|
9
|
-
module.exports =
|
|
8
|
+
3203 (module) {
|
|
9
|
+
module.exports = __rspack_external__modern_js_runtime_cli_d0edd589;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
12
|
const DEFAULT_ROUTES_DIR = 'routes';
|
|
@@ -15,88 +15,13 @@ const ENTRYPOINTS_KEY = '@modern-js/plugin-tanstack';
|
|
|
15
15
|
let runtimeRouterCli;
|
|
16
16
|
function getRuntimeRouterCli() {
|
|
17
17
|
if (runtimeRouterCli) return runtimeRouterCli;
|
|
18
|
-
const cli = __webpack_require__(
|
|
18
|
+
const cli = __webpack_require__(3203);
|
|
19
19
|
if (cli.handleGeneratorEntryCode && cli.getEntrypointRoutesDir && cli.getEntrypointRoutesOwner && cli.updateNestedRoutesSpec) {
|
|
20
20
|
runtimeRouterCli = cli;
|
|
21
21
|
return runtimeRouterCli;
|
|
22
22
|
}
|
|
23
23
|
throw new Error('@modern-js/plugin-tanstack requires @modern-js/runtime/cli router helper exports.');
|
|
24
24
|
}
|
|
25
|
-
async function writeFileIfChanged(filePath, content) {
|
|
26
|
-
try {
|
|
27
|
-
const previous = await fs.pathExists(filePath) ? await fs.readFile(filePath, 'utf-8') : null;
|
|
28
|
-
if (previous === content) return;
|
|
29
|
-
} catch {}
|
|
30
|
-
await fs.outputFile(filePath, content, 'utf-8');
|
|
31
|
-
}
|
|
32
|
-
function createRegisterDtsContent(opts) {
|
|
33
|
-
const importStatements = opts.entries.map((entryName, index)=>`import type { router as router${index} } from './${entryName}/router.gen';`).join('\n');
|
|
34
|
-
const routerUnionType = opts.entries.map((_, index)=>`typeof router${index}`).join(' | ');
|
|
35
|
-
const canonicalEntries = Object.entries(opts.canonicalRoutes ?? {});
|
|
36
|
-
const canonicalRoutesAugmentation = canonicalEntries.length > 0 ? `
|
|
37
|
-
declare module '${opts.i18nRuntimeModule || '@modern-js/plugin-i18n/runtime'}' {
|
|
38
|
-
interface UltramodernCanonicalRoutes {
|
|
39
|
-
${canonicalEntries.map(([routePath, paramsType])=>` '${routePath}': ${paramsType};`).join('\n')}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
` : '';
|
|
43
|
-
return `// This file is auto-generated by Modern.js. Do not edit manually.
|
|
44
|
-
|
|
45
|
-
${importStatements}
|
|
46
|
-
|
|
47
|
-
declare module '${opts.runtimeModule}' {
|
|
48
|
-
interface Register {
|
|
49
|
-
router: ${routerUnionType};
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
${canonicalRoutesAugmentation}`;
|
|
53
|
-
}
|
|
54
|
-
async function writeTanstackRegisterFile(opts) {
|
|
55
|
-
const { entries, generatedDirName = DEFAULT_GENERATED_DIR_NAME, runtimeModule = '@modern-js/plugin-tanstack/runtime', srcDirectory, canonicalRoutes, i18nRuntimeModule } = opts;
|
|
56
|
-
if (0 === entries.length) return;
|
|
57
|
-
const registerDtsPath = node_path.join(srcDirectory, generatedDirName, 'register.gen.d.ts');
|
|
58
|
-
await writeFileIfChanged(registerDtsPath, createRegisterDtsContent({
|
|
59
|
-
entries,
|
|
60
|
-
runtimeModule,
|
|
61
|
-
canonicalRoutes,
|
|
62
|
-
i18nRuntimeModule
|
|
63
|
-
}));
|
|
64
|
-
}
|
|
65
|
-
async function writeTanstackRouterTypesForEntries(opts) {
|
|
66
|
-
const { appContext, generatedDirName = DEFAULT_GENERATED_DIR_NAME, routesByEntry, i18nPluginInstalled = false } = opts;
|
|
67
|
-
const entryNames = Object.keys(routesByEntry);
|
|
68
|
-
await Promise.all(entryNames.map(async (entryName)=>{
|
|
69
|
-
const { routerGenTs } = await generateTanstackRouterTypesSourceForEntry({
|
|
70
|
-
appContext,
|
|
71
|
-
entryName,
|
|
72
|
-
generatedDirName,
|
|
73
|
-
routes: routesByEntry[entryName]
|
|
74
|
-
});
|
|
75
|
-
await writeFileIfChanged(node_path.join(appContext.srcDirectory, generatedDirName, entryName, 'router.gen.ts'), routerGenTs);
|
|
76
|
-
}));
|
|
77
|
-
const mainEntryName = appContext.entrypoints?.find((entrypoint)=>entrypoint.isMainEntry)?.entryName;
|
|
78
|
-
const registerEntries = entryNames.sort((a, b)=>{
|
|
79
|
-
if (mainEntryName && a === mainEntryName) return -1;
|
|
80
|
-
if (mainEntryName && b === mainEntryName) return 1;
|
|
81
|
-
return a.localeCompare(b);
|
|
82
|
-
});
|
|
83
|
-
let canonicalRoutes = null;
|
|
84
|
-
if (i18nPluginInstalled) for (const entryName of registerEntries){
|
|
85
|
-
const entryCanonicalRoutes = collectCanonicalRoutesForEntry(routesByEntry[entryName], {
|
|
86
|
-
localeParamHeuristic: true
|
|
87
|
-
});
|
|
88
|
-
if (entryCanonicalRoutes) canonicalRoutes = {
|
|
89
|
-
...entryCanonicalRoutes,
|
|
90
|
-
...canonicalRoutes ?? {}
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
await writeTanstackRegisterFile({
|
|
94
|
-
entries: registerEntries,
|
|
95
|
-
generatedDirName,
|
|
96
|
-
srcDirectory: appContext.srcDirectory,
|
|
97
|
-
canonicalRoutes
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
25
|
function tanstackRouterPlugin(options = {}) {
|
|
101
26
|
const routesDir = options.routesDir || DEFAULT_ROUTES_DIR;
|
|
102
27
|
const generatedDirName = options.generatedDirName || DEFAULT_GENERATED_DIR_NAME;
|
|
@@ -239,5 +164,6 @@ function tanstackRouterPlugin(options = {}) {
|
|
|
239
164
|
};
|
|
240
165
|
}
|
|
241
166
|
const src_cli = tanstackRouterPlugin;
|
|
167
|
+
export { collectCanonicalRoutesForEntry, generateTanstackRouterTypesSourceForEntry } from "./tanstackTypes.mjs";
|
|
242
168
|
export default src_cli;
|
|
243
|
-
export {
|
|
169
|
+
export { createTanstackRsbuildRouteSplittingProfile, generateTanstackRouteArtifacts, resolveTanstackRouteCodeSplittingEnabled, tanstackRouterPlugin, writeTanstackRegisterFile, writeTanstackRouterTypesForEntries };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { toTanstackPath } from "./shared.mjs";
|
|
2
|
+
const LOCALE_PARAM_SEGMENTS = new Set([
|
|
3
|
+
':lang',
|
|
4
|
+
':locale',
|
|
5
|
+
':language',
|
|
6
|
+
'$lang',
|
|
7
|
+
'$locale',
|
|
8
|
+
'$language'
|
|
9
|
+
]);
|
|
10
|
+
function paramsTypeForCanonicalPath(canonicalPath) {
|
|
11
|
+
const fields = [];
|
|
12
|
+
for (const segment of canonicalPath.split('/'))if (segment) {
|
|
13
|
+
if ('*' === segment || '$' === segment) {
|
|
14
|
+
fields.push("'_splat'?: string");
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
if (segment.startsWith('{-$') && segment.endsWith('}')) {
|
|
18
|
+
fields.push(`${JSON.stringify(segment.slice(3, -1))}?: string`);
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
if (segment.startsWith('$')) {
|
|
22
|
+
fields.push(`${JSON.stringify(segment.slice(1))}: string`);
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (segment.startsWith(':')) {
|
|
26
|
+
const optional = segment.endsWith('?');
|
|
27
|
+
const name = segment.slice(1, optional ? void 0 : segment.length);
|
|
28
|
+
fields.push(`${JSON.stringify(optional ? name.slice(0, -1) : name)}${optional ? '?' : ''}: string`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return fields.length > 0 ? `{ ${fields.join('; ')} }` : 'Record<string, never>';
|
|
32
|
+
}
|
|
33
|
+
function collectCanonicalRoutesForEntry(routes, options = {}) {
|
|
34
|
+
const { localeParamHeuristic = true } = options;
|
|
35
|
+
const canonicalParams = new Map();
|
|
36
|
+
let hasI18nSurface = false;
|
|
37
|
+
const normalizeJoined = (joined)=>{
|
|
38
|
+
const collapsed = joined.replace(/\/+/g, '/');
|
|
39
|
+
const withLeading = collapsed.startsWith('/') ? collapsed : `/${collapsed}`;
|
|
40
|
+
return withLeading.length > 1 ? withLeading.replace(/\/+$/, '') : withLeading;
|
|
41
|
+
};
|
|
42
|
+
const record = (canonicalPath)=>{
|
|
43
|
+
const normalized = normalizeJoined(canonicalPath || '/');
|
|
44
|
+
const key = toTanstackPath(normalized);
|
|
45
|
+
if (!canonicalParams.has(key)) canonicalParams.set(key, paramsTypeForCanonicalPath(normalized));
|
|
46
|
+
};
|
|
47
|
+
const visit = (route, parentPath)=>{
|
|
48
|
+
let currentPath = parentPath;
|
|
49
|
+
if ('string' == typeof route.modernCanonicalPath) {
|
|
50
|
+
hasI18nSurface = true;
|
|
51
|
+
currentPath = normalizeJoined(route.modernCanonicalPath);
|
|
52
|
+
} else if ('string' == typeof route.path && route.path.length > 0) {
|
|
53
|
+
const segments = route.path.replace(/\[(.+?)\]/g, ':$1').split('/').filter(Boolean);
|
|
54
|
+
if (localeParamHeuristic && '' === parentPath && LOCALE_PARAM_SEGMENTS.has(segments[0])) {
|
|
55
|
+
hasI18nSurface = true;
|
|
56
|
+
segments.shift();
|
|
57
|
+
}
|
|
58
|
+
currentPath = segments.length ? normalizeJoined(`${parentPath}/${segments.join('/')}`) : parentPath;
|
|
59
|
+
}
|
|
60
|
+
const children = route.children;
|
|
61
|
+
if (children && children.length > 0) {
|
|
62
|
+
for (const child of children)visit(child, currentPath);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
record(currentPath || '/');
|
|
66
|
+
};
|
|
67
|
+
const rootModern = routes.find((route)=>route.isRoot);
|
|
68
|
+
const topLevel = rootModern ? rootModern.children ?? [] : routes;
|
|
69
|
+
for (const route of topLevel)visit(route, '');
|
|
70
|
+
if (!hasI18nSurface || 0 === canonicalParams.size) return null;
|
|
71
|
+
return Object.fromEntries([
|
|
72
|
+
...canonicalParams.entries()
|
|
73
|
+
].sort(([a], [b])=>a.localeCompare(b)));
|
|
74
|
+
}
|
|
75
|
+
export { collectCanonicalRoutesForEntry };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { getPathWithoutExt } from "@modern-js/runtime/cli";
|
|
2
|
+
import { findExists, formatImportPath, slash } from "@modern-js/utils";
|
|
3
|
+
const JS_OR_TS_EXTS = [
|
|
4
|
+
'.js',
|
|
5
|
+
'.jsx',
|
|
6
|
+
'.ts',
|
|
7
|
+
'.tsx',
|
|
8
|
+
'.mjs',
|
|
9
|
+
'.mts',
|
|
10
|
+
'.cjs',
|
|
11
|
+
'.cts'
|
|
12
|
+
];
|
|
13
|
+
async function resolveFileNoExt(inputNoExtPath) {
|
|
14
|
+
const file = findExists(JS_OR_TS_EXTS.map((ext)=>`${inputNoExtPath}${ext}`));
|
|
15
|
+
return file ? getPathWithoutExt(file) : null;
|
|
16
|
+
}
|
|
17
|
+
function quote(str) {
|
|
18
|
+
return JSON.stringify(str);
|
|
19
|
+
}
|
|
20
|
+
function normalizeRelativeImport(p) {
|
|
21
|
+
const normalized = formatImportPath(slash(p));
|
|
22
|
+
if (normalized.startsWith('.')) return normalized;
|
|
23
|
+
return `./${normalized}`;
|
|
24
|
+
}
|
|
25
|
+
function pickModernLoaderModule(route) {
|
|
26
|
+
const extras = route;
|
|
27
|
+
const loaderPath = extras.data || extras.loader;
|
|
28
|
+
if (!loaderPath || 'string' != typeof loaderPath) return null;
|
|
29
|
+
const inline = Boolean(extras.data);
|
|
30
|
+
return {
|
|
31
|
+
loaderPath,
|
|
32
|
+
inline
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function pickRouteSearchContractModules(route) {
|
|
36
|
+
const extras = route;
|
|
37
|
+
const validateSearchPath = extras.validateSearch;
|
|
38
|
+
const loaderDepsPath = extras.loaderDeps;
|
|
39
|
+
return {
|
|
40
|
+
validateSearchPath: 'string' == typeof validateSearchPath ? validateSearchPath : null,
|
|
41
|
+
loaderDepsPath: 'string' == typeof loaderDepsPath ? loaderDepsPath : null
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function isPathlessLayout(route) {
|
|
45
|
+
const extras = route;
|
|
46
|
+
return 'nested' === extras.type && 'boolean' != typeof extras.index && void 0 === extras.path;
|
|
47
|
+
}
|
|
48
|
+
function isIndexRoute(route) {
|
|
49
|
+
const extras = route;
|
|
50
|
+
return 'nested' === extras.type && Boolean(extras.index);
|
|
51
|
+
}
|
|
52
|
+
function createRouteStaticDataSnippet(opts) {
|
|
53
|
+
const staticDataLines = [];
|
|
54
|
+
if (opts.modernRouteId) staticDataLines.push(`modernRouteId: ${quote(opts.modernRouteId)},`);
|
|
55
|
+
if (opts.loaderName) staticDataLines.push(`modernRouteLoader: ${opts.loaderName},`);
|
|
56
|
+
if (opts.actionName) staticDataLines.push(`modernRouteAction: ${opts.actionName},`);
|
|
57
|
+
if (!staticDataLines.length) return null;
|
|
58
|
+
return `staticData: createRouteStaticData({\n ${staticDataLines.join('\n ')}\n }),`;
|
|
59
|
+
}
|
|
60
|
+
export { toTanstackPath } from "../../runtime/routeTree/paths.mjs";
|
|
61
|
+
export { createRouteStaticDataSnippet, isIndexRoute, isPathlessLayout, normalizeRelativeImport, pickModernLoaderModule, pickRouteSearchContractModules, quote, resolveFileNoExt };
|