@bleedingdev/modern-js-plugin-tanstack 3.9.0-ultramodern.9 → 3.9.3-ultramodern.2
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 +15 -1
- package/dist/cjs/cli/index.js +13 -2
- package/dist/cjs/cli/routeMetadata.js +131 -0
- package/dist/cjs/cli/rscRouteLayer.js +86 -0
- package/dist/cjs/cli/tanstackTypes/canonicalRoutes.js +7 -7
- package/dist/cjs/cli/tanstackTypes/shared.js +0 -14
- package/dist/cjs/cli/tanstackTypes/source.js +28 -63
- package/dist/cjs/runtime/lifecycle.js +0 -3
- package/dist/cjs/runtime/loaderBridge.js +10 -4
- package/dist/cjs/runtime/navigation.js +102 -0
- package/dist/cjs/runtime/plugin.js +10 -1
- package/dist/cjs/runtime/plugin.node.js +89 -64
- package/dist/cjs/runtime/routeTree/construction.js +19 -61
- package/dist/cjs/runtime/routeTree/loaders.js +1 -1
- package/dist/cjs/runtime/routeTree/paths.js +0 -6
- package/dist/cjs/runtime/ssrManagedTags.js +2 -12
- package/dist/cjs/runtime/utils.js +1 -0
- package/dist/cjs/shared/routeDescriptor.js +88 -0
- package/dist/esm/cli/artifacts.mjs +13 -2
- package/dist/esm/cli/index.mjs +13 -11
- package/dist/esm/cli/routeMetadata.mjs +71 -0
- package/dist/esm/cli/rscRouteLayer.mjs +35 -0
- package/dist/esm/cli/tanstackTypes/canonicalRoutes.mjs +7 -7
- package/dist/esm/cli/tanstackTypes/shared.mjs +1 -9
- package/dist/esm/cli/tanstackTypes/source.mjs +29 -64
- package/dist/esm/runtime/lifecycle.mjs +1 -1
- package/dist/esm/runtime/loaderBridge.mjs +8 -5
- package/dist/esm/runtime/navigation.mjs +64 -0
- package/dist/esm/runtime/plugin.mjs +10 -1
- package/dist/esm/runtime/plugin.node.mjs +91 -66
- package/dist/esm/runtime/routeTree/construction.mjs +19 -61
- package/dist/esm/runtime/routeTree/loaders.mjs +2 -2
- package/dist/esm/runtime/routeTree/paths.mjs +1 -4
- package/dist/esm/runtime/ssrManagedTags.mjs +1 -8
- package/dist/esm/runtime/utils.mjs +1 -0
- package/dist/esm/shared/routeDescriptor.mjs +50 -0
- package/dist/esm-node/cli/artifacts.mjs +13 -2
- package/dist/esm-node/cli/index.mjs +13 -11
- package/dist/esm-node/cli/routeMetadata.mjs +72 -0
- package/dist/esm-node/cli/rscRouteLayer.mjs +36 -0
- package/dist/esm-node/cli/tanstackTypes/canonicalRoutes.mjs +7 -7
- package/dist/esm-node/cli/tanstackTypes/shared.mjs +1 -9
- package/dist/esm-node/cli/tanstackTypes/source.mjs +29 -64
- package/dist/esm-node/runtime/lifecycle.mjs +1 -1
- package/dist/esm-node/runtime/loaderBridge.mjs +8 -5
- package/dist/esm-node/runtime/navigation.mjs +65 -0
- package/dist/esm-node/runtime/plugin.mjs +10 -1
- package/dist/esm-node/runtime/plugin.node.mjs +91 -66
- package/dist/esm-node/runtime/routeTree/construction.mjs +19 -61
- package/dist/esm-node/runtime/routeTree/loaders.mjs +2 -2
- package/dist/esm-node/runtime/routeTree/paths.mjs +1 -4
- package/dist/esm-node/runtime/ssrManagedTags.mjs +1 -8
- package/dist/esm-node/runtime/utils.mjs +1 -0
- package/dist/esm-node/shared/routeDescriptor.mjs +51 -0
- package/dist/types/cli/artifacts.d.ts +16 -7
- package/dist/types/cli/index.d.ts +1 -1
- package/dist/types/cli/routeMetadata.d.ts +18 -0
- package/dist/types/cli/rscRouteLayer.d.ts +11 -0
- package/dist/types/cli/tanstackTypes/shared.d.ts +0 -2
- package/dist/types/cli/tanstackTypes/source.d.ts +3 -2
- package/dist/types/runtime/lifecycle.d.ts +1 -1
- package/dist/types/runtime/loaderBridge.d.ts +1 -0
- package/dist/types/runtime/navigation.d.ts +4 -0
- package/dist/types/runtime/pluginShared.d.ts +5 -0
- package/dist/types/runtime/routeTree/paths.d.ts +0 -2
- package/dist/types/runtime/ssrManagedTags.d.ts +0 -1
- package/dist/types/runtime/ssrTypes.d.ts +0 -7
- package/dist/types/shared/routeDescriptor.d.ts +26 -0
- package/package.json +32 -26
- package/src/cli/artifacts.ts +59 -8
- package/src/cli/index.ts +17 -4
- package/src/cli/routeMetadata.ts +121 -0
- package/src/cli/rscRouteLayer.ts +93 -0
- package/src/cli/tanstackTypes/canonicalRoutes.ts +17 -12
- package/src/cli/tanstackTypes/shared.ts +0 -14
- package/src/cli/tanstackTypes/source.ts +48 -120
- package/src/runtime/lifecycle.ts +0 -1
- package/src/runtime/loaderBridge.ts +9 -9
- package/src/runtime/navigation.ts +78 -0
- package/src/runtime/plugin.node.tsx +121 -91
- package/src/runtime/plugin.tsx +10 -0
- package/src/runtime/pluginShared.ts +12 -0
- package/src/runtime/routeTree/construction.ts +32 -112
- package/src/runtime/routeTree/loaders.ts +2 -4
- package/src/runtime/routeTree/paths.ts +0 -6
- package/src/runtime/ssrManagedTags.ts +0 -17
- package/src/runtime/ssrTypes.ts +0 -7
- package/src/runtime/utils.tsx +1 -0
- package/src/shared/routeDescriptor.ts +102 -0
- package/dist/esm/rslib-runtime~1.mjs +0 -18
- package/dist/esm-node/rslib-runtime~0.mjs +0 -19
- package/rslib.config.mts +0 -4
- package/rstest.config.mts +0 -53
- package/tests/router/cli.test.ts +0 -420
- package/tests/router/clientHydration.test.tsx +0 -200
- package/tests/router/dataMutation.test.tsx +0 -428
- package/tests/router/fixtures/router-gen.oxlint.json +0 -5
- package/tests/router/flightSerialization.roundtrip.test.tsx +0 -140
- package/tests/router/generateRouteArtifacts.test.ts +0 -146
- package/tests/router/loaderBridge.test.ts +0 -207
- package/tests/router/localisedIdentity.test.tsx +0 -95
- package/tests/router/prefetchLink.test.tsx +0 -122
- package/tests/router/prefetchLinkPreload.test.tsx +0 -65
- package/tests/router/routeHooks.test.ts +0 -49
- package/tests/router/routeTree.test.ts +0 -240
- package/tests/router/rsc.test.tsx +0 -480
- package/tests/router/serverPlugin.test.ts +0 -157
- package/tests/router/slotUsageSanitizer.test.ts +0 -23
- package/tests/router/ssrPreload.test.ts +0 -30
- package/tests/router/tanstackTypes.test.ts +0 -384
- package/tsconfig.json +0 -12
- package/tsconfig.tsgo.json +0 -6
|
@@ -38,12 +38,14 @@ var __webpack_exports__ = {};
|
|
|
38
38
|
__webpack_require__.r(__webpack_exports__);
|
|
39
39
|
__webpack_require__.d(__webpack_exports__, {
|
|
40
40
|
generateTanstackRouteArtifacts: ()=>generateTanstackRouteArtifacts,
|
|
41
|
+
writeRouteMetadataManifest: ()=>writeRouteMetadataManifest,
|
|
41
42
|
writeTanstackRegisterFile: ()=>writeTanstackRegisterFile,
|
|
42
43
|
writeTanstackRouterTypesForEntries: ()=>writeTanstackRouterTypesForEntries
|
|
43
44
|
});
|
|
44
45
|
const external_node_path_namespaceObject = require("node:path");
|
|
45
46
|
var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
|
|
46
47
|
const utils_namespaceObject = require("@modern-js/utils");
|
|
48
|
+
const external_routeMetadata_js_namespaceObject = require("./routeMetadata.js");
|
|
47
49
|
const external_tanstackTypes_js_namespaceObject = require("./tanstackTypes.js");
|
|
48
50
|
const DEFAULT_GENERATED_DIR_NAME = 'modern-tanstack';
|
|
49
51
|
async function writeFileIfChanged(filePath, content) {
|
|
@@ -121,7 +123,16 @@ async function writeTanstackRouterTypesForEntries(opts) {
|
|
|
121
123
|
canonicalRoutes
|
|
122
124
|
});
|
|
123
125
|
}
|
|
126
|
+
async function writeRouteMetadataManifest(opts) {
|
|
127
|
+
const routesDirectory = external_node_path_default().join(opts.appDirectory, 'src', 'routes');
|
|
128
|
+
const manifestPath = external_node_path_default().join(routesDirectory, external_routeMetadata_js_namespaceObject.ROUTE_METADATA_MANIFEST_FILE_NAME);
|
|
129
|
+
const manifest = (0, external_routeMetadata_js_namespaceObject.renderRouteMetadataManifest)(await (0, external_routeMetadata_js_namespaceObject.findRouteMetaFiles)(routesDirectory));
|
|
130
|
+
if (null !== manifest) return void await writeFileIfChanged(manifestPath, manifest);
|
|
131
|
+
const previous = await utils_namespaceObject.fs.pathExists(manifestPath) ? await utils_namespaceObject.fs.readFile(manifestPath, 'utf-8') : null;
|
|
132
|
+
if (previous?.startsWith(`${external_routeMetadata_js_namespaceObject.ROUTE_METADATA_MANIFEST_HEADER}\n`)) throw new Error(`[plugin-tanstack] ${manifestPath} is generated from route.meta.ts files, but none remain below ${routesDirectory}. Restore at least one route.meta.ts that exports routeMeta, or delete the manifest together with its imports.`);
|
|
133
|
+
}
|
|
124
134
|
async function generateTanstackRouteArtifacts(opts) {
|
|
135
|
+
await writeRouteMetadataManifest(opts);
|
|
125
136
|
const [{ createRunOptions }, { cli }, utils] = await Promise.all([
|
|
126
137
|
import("@modern-js/app-tools/cli/run"),
|
|
127
138
|
import("@modern-js/plugin/cli"),
|
|
@@ -139,16 +150,19 @@ async function generateTanstackRouteArtifacts(opts) {
|
|
|
139
150
|
version: opts.version || process.env.MODERN_JS_VERSION || '0.0.0-routes-generate',
|
|
140
151
|
internalPlugins: utils.INTERNAL_RUNTIME_PLUGINS
|
|
141
152
|
});
|
|
142
|
-
await cli.init({
|
|
153
|
+
const { appContext } = await cli.init({
|
|
143
154
|
...runOptions,
|
|
144
155
|
command: 'build'
|
|
145
156
|
});
|
|
157
|
+
await appContext.hooks.onBeforeExit.call();
|
|
146
158
|
}
|
|
147
159
|
exports.generateTanstackRouteArtifacts = __webpack_exports__.generateTanstackRouteArtifacts;
|
|
160
|
+
exports.writeRouteMetadataManifest = __webpack_exports__.writeRouteMetadataManifest;
|
|
148
161
|
exports.writeTanstackRegisterFile = __webpack_exports__.writeTanstackRegisterFile;
|
|
149
162
|
exports.writeTanstackRouterTypesForEntries = __webpack_exports__.writeTanstackRouterTypesForEntries;
|
|
150
163
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
151
164
|
"generateTanstackRouteArtifacts",
|
|
165
|
+
"writeRouteMetadataManifest",
|
|
152
166
|
"writeTanstackRegisterFile",
|
|
153
167
|
"writeTanstackRouterTypesForEntries"
|
|
154
168
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
package/dist/cjs/cli/index.js
CHANGED
|
@@ -59,6 +59,7 @@ var __webpack_exports__ = {};
|
|
|
59
59
|
generateTanstackRouterTypesSourceForEntry: ()=>external_tanstackTypes_js_namespaceObject.generateTanstackRouterTypesSourceForEntry,
|
|
60
60
|
resolveTanstackRouteCodeSplittingEnabled: ()=>external_routeSplitting_js_namespaceObject.resolveTanstackRouteCodeSplittingEnabled,
|
|
61
61
|
tanstackRouterPlugin: ()=>tanstackRouterPlugin,
|
|
62
|
+
writeRouteMetadataManifest: ()=>external_artifacts_js_namespaceObject.writeRouteMetadataManifest,
|
|
62
63
|
writeTanstackRegisterFile: ()=>external_artifacts_js_namespaceObject.writeTanstackRegisterFile,
|
|
63
64
|
writeTanstackRouterTypesForEntries: ()=>external_artifacts_js_namespaceObject.writeTanstackRouterTypesForEntries
|
|
64
65
|
});
|
|
@@ -67,6 +68,7 @@ var __webpack_exports__ = {};
|
|
|
67
68
|
const utils_namespaceObject = require("@modern-js/utils");
|
|
68
69
|
const external_artifacts_js_namespaceObject = require("./artifacts.js");
|
|
69
70
|
const external_routeSplitting_js_namespaceObject = require("./routeSplitting.js");
|
|
71
|
+
const external_rscRouteLayer_js_namespaceObject = require("./rscRouteLayer.js");
|
|
70
72
|
const external_tanstackTypes_js_namespaceObject = require("./tanstackTypes.js");
|
|
71
73
|
const DEFAULT_ROUTES_DIR = 'routes';
|
|
72
74
|
const DEFAULT_GENERATED_DIR_NAME = 'modern-tanstack';
|
|
@@ -156,6 +158,13 @@ var __webpack_exports__ = {};
|
|
|
156
158
|
}));
|
|
157
159
|
api.config(()=>({
|
|
158
160
|
...routeSplittingProfile.defaultConfig,
|
|
161
|
+
builderPlugins: [
|
|
162
|
+
(0, external_rscRouteLayer_js_namespaceObject.createTanstackRscRouteLayerPlugin)(()=>({
|
|
163
|
+
entryNames: api.getAppContext().entrypoints.filter(isTanstackEntrypoint).map((entrypoint)=>entrypoint.entryName),
|
|
164
|
+
internalDirectory: api.getAppContext().internalDirectory,
|
|
165
|
+
rsc: api.getNormalizedConfig().server.rsc
|
|
166
|
+
}))
|
|
167
|
+
],
|
|
159
168
|
source: {
|
|
160
169
|
include: [
|
|
161
170
|
/[\\/]node_modules[\\/]@tanstack[\\/]react-router[\\/]/,
|
|
@@ -182,7 +191,7 @@ var __webpack_exports__ = {};
|
|
|
182
191
|
hydrateRscClientRoutes: true,
|
|
183
192
|
includeRouteServerLoadersInSsrEntry: false,
|
|
184
193
|
isolateRouteDataInRscLayer: true,
|
|
185
|
-
serverRoutesFileName:
|
|
194
|
+
serverRoutesFileName: external_rscRouteLayer_js_namespaceObject.TANSTACK_SERVER_ROUTES_FILE
|
|
186
195
|
});
|
|
187
196
|
await (0, external_artifacts_js_namespaceObject.writeTanstackRouterTypesForEntries)({
|
|
188
197
|
appContext: api.getAppContext(),
|
|
@@ -206,7 +215,7 @@ var __webpack_exports__ = {};
|
|
|
206
215
|
hydrateRscClientRoutes: true,
|
|
207
216
|
includeRouteServerLoadersInSsrEntry: false,
|
|
208
217
|
isolateRouteDataInRscLayer: true,
|
|
209
|
-
serverRoutesFileName:
|
|
218
|
+
serverRoutesFileName: external_rscRouteLayer_js_namespaceObject.TANSTACK_SERVER_ROUTES_FILE
|
|
210
219
|
});
|
|
211
220
|
await (0, external_artifacts_js_namespaceObject.writeTanstackRouterTypesForEntries)({
|
|
212
221
|
appContext: api.getAppContext(),
|
|
@@ -248,6 +257,7 @@ exports.generateTanstackRouteArtifacts = __webpack_exports__.generateTanstackRou
|
|
|
248
257
|
exports.generateTanstackRouterTypesSourceForEntry = __webpack_exports__.generateTanstackRouterTypesSourceForEntry;
|
|
249
258
|
exports.resolveTanstackRouteCodeSplittingEnabled = __webpack_exports__.resolveTanstackRouteCodeSplittingEnabled;
|
|
250
259
|
exports.tanstackRouterPlugin = __webpack_exports__.tanstackRouterPlugin;
|
|
260
|
+
exports.writeRouteMetadataManifest = __webpack_exports__.writeRouteMetadataManifest;
|
|
251
261
|
exports.writeTanstackRegisterFile = __webpack_exports__.writeTanstackRegisterFile;
|
|
252
262
|
exports.writeTanstackRouterTypesForEntries = __webpack_exports__.writeTanstackRouterTypesForEntries;
|
|
253
263
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
@@ -258,6 +268,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
|
258
268
|
"generateTanstackRouterTypesSourceForEntry",
|
|
259
269
|
"resolveTanstackRouteCodeSplittingEnabled",
|
|
260
270
|
"tanstackRouterPlugin",
|
|
271
|
+
"writeRouteMetadataManifest",
|
|
261
272
|
"writeTanstackRegisterFile",
|
|
262
273
|
"writeTanstackRouterTypesForEntries"
|
|
263
274
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.n = (module)=>{
|
|
5
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
+
__webpack_require__.d(getter, {
|
|
7
|
+
a: getter
|
|
8
|
+
});
|
|
9
|
+
return getter;
|
|
10
|
+
};
|
|
11
|
+
})();
|
|
12
|
+
(()=>{
|
|
13
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
14
|
+
var define = (defs, kind)=>{
|
|
15
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
[kind]: defs[key]
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
define(getters, "get");
|
|
21
|
+
define(values, "value");
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
(()=>{
|
|
25
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
26
|
+
})();
|
|
27
|
+
(()=>{
|
|
28
|
+
__webpack_require__.r = (exports1)=>{
|
|
29
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
30
|
+
value: 'Module'
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
33
|
+
value: true
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
37
|
+
var __webpack_exports__ = {};
|
|
38
|
+
__webpack_require__.r(__webpack_exports__);
|
|
39
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
40
|
+
ROUTE_METADATA_MANIFEST_FILE_NAME: ()=>ROUTE_METADATA_MANIFEST_FILE_NAME,
|
|
41
|
+
ROUTE_METADATA_MANIFEST_HEADER: ()=>ROUTE_METADATA_MANIFEST_HEADER,
|
|
42
|
+
ROUTE_META_FILE_NAME: ()=>ROUTE_META_FILE_NAME,
|
|
43
|
+
findRouteMetaFiles: ()=>findRouteMetaFiles,
|
|
44
|
+
renderRouteMetadataManifest: ()=>renderRouteMetadataManifest
|
|
45
|
+
});
|
|
46
|
+
const promises_namespaceObject = require("node:fs/promises");
|
|
47
|
+
const external_node_path_namespaceObject = require("node:path");
|
|
48
|
+
var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
|
|
49
|
+
const ROUTE_META_FILE_NAME = 'route.meta.ts';
|
|
50
|
+
const ROUTE_METADATA_MANIFEST_FILE_NAME = 'ultramodern-route-metadata.ts';
|
|
51
|
+
const ROUTE_METADATA_MANIFEST_HEADER = `// @generated by @modern-js/plugin-tanstack from ${ROUTE_META_FILE_NAME} files. Run routes-generate; do not edit.`;
|
|
52
|
+
const PRINT_WIDTH = 120;
|
|
53
|
+
const MANIFEST_BODY = `export const ultramodernLocalisedUrls = Object.fromEntries(
|
|
54
|
+
ultramodernRouteMetadata
|
|
55
|
+
.filter((route: { canonicalPath: string }) => route.canonicalPath !== '/')
|
|
56
|
+
.map((route) => [route.canonicalPath, route.localisedPaths]),
|
|
57
|
+
);
|
|
58
|
+
export const ultramodernPublicRoutes = ultramodernRouteMetadata
|
|
59
|
+
.filter((route) => route.public && route.indexable)
|
|
60
|
+
.map((route) => ({
|
|
61
|
+
canonicalPath: route.canonicalPath,
|
|
62
|
+
descriptionKey: route.descriptionKey,
|
|
63
|
+
id: route.id,
|
|
64
|
+
localisedPaths: route.localisedPaths,
|
|
65
|
+
namespace: route.namespace,
|
|
66
|
+
ownerAppId: route.ownerAppId,
|
|
67
|
+
titleKey: route.titleKey,
|
|
68
|
+
...('jsonLd' in route ? { jsonLd: route.jsonLd } : {}),
|
|
69
|
+
}));
|
|
70
|
+
export const ultramodernRouteConfig = {
|
|
71
|
+
authoring: 'colocated-route-meta',
|
|
72
|
+
generatedManifest: true,
|
|
73
|
+
localisedUrls: ultramodernLocalisedUrls,
|
|
74
|
+
namespace: ultramodernRouteNamespace,
|
|
75
|
+
publicRoutes: ultramodernPublicRoutes,
|
|
76
|
+
routes: ultramodernRouteMetadata,
|
|
77
|
+
source: 'route-owned',
|
|
78
|
+
} as const;
|
|
79
|
+
`;
|
|
80
|
+
const compareCodeUnits = (left, right)=>left < right ? -1 : left > right ? 1 : 0;
|
|
81
|
+
const quoteSpecifier = (specifier)=>specifier.includes("'") ? JSON.stringify(specifier) : `'${specifier}'`;
|
|
82
|
+
function renderRouteMetadataManifest(routeMetaFiles) {
|
|
83
|
+
const specifiers = routeMetaFiles.map((file)=>`./${file.replaceAll('\\', '/').replace(/\.ts$/u, '')}`).sort(compareCodeUnits);
|
|
84
|
+
if (0 === specifiers.length) return null;
|
|
85
|
+
const bindings = specifiers.map((_, index)=>`route${index}`);
|
|
86
|
+
const imports = specifiers.map((specifier, index)=>`import { routeMeta as ${bindings[index]} } from ${quoteSpecifier(specifier)};`);
|
|
87
|
+
const inlineRoutes = `export const ultramodernRouteMetadata = [${bindings.join(', ')}] as const;`;
|
|
88
|
+
const routes = inlineRoutes.length <= PRINT_WIDTH ? inlineRoutes : `export const ultramodernRouteMetadata = [\n${bindings.map((binding)=>` ${binding},\n`).join('')}] as const;`;
|
|
89
|
+
return `${ROUTE_METADATA_MANIFEST_HEADER}
|
|
90
|
+
${imports.join('\n')}
|
|
91
|
+
|
|
92
|
+
export const ultramodernRouteNamespace = route0.namespace;
|
|
93
|
+
${routes}
|
|
94
|
+
${MANIFEST_BODY}`;
|
|
95
|
+
}
|
|
96
|
+
async function findRouteMetaFiles(routesDirectory) {
|
|
97
|
+
const files = [];
|
|
98
|
+
const visit = async (relativeDirectory)=>{
|
|
99
|
+
const entries = await (0, promises_namespaceObject.readdir)(external_node_path_default().join(routesDirectory, relativeDirectory), {
|
|
100
|
+
withFileTypes: true
|
|
101
|
+
});
|
|
102
|
+
for (const entry of entries){
|
|
103
|
+
const relativePath = external_node_path_default().join(relativeDirectory, entry.name);
|
|
104
|
+
if (entry.isDirectory()) await visit(relativePath);
|
|
105
|
+
else if (entry.isFile() && entry.name === ROUTE_META_FILE_NAME) files.push(relativePath);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
try {
|
|
109
|
+
await visit('');
|
|
110
|
+
} catch (error) {
|
|
111
|
+
const { code, path: missingPath } = error;
|
|
112
|
+
if ('ENOENT' === code && missingPath === routesDirectory) return [];
|
|
113
|
+
throw error;
|
|
114
|
+
}
|
|
115
|
+
return files;
|
|
116
|
+
}
|
|
117
|
+
exports.ROUTE_METADATA_MANIFEST_FILE_NAME = __webpack_exports__.ROUTE_METADATA_MANIFEST_FILE_NAME;
|
|
118
|
+
exports.ROUTE_METADATA_MANIFEST_HEADER = __webpack_exports__.ROUTE_METADATA_MANIFEST_HEADER;
|
|
119
|
+
exports.ROUTE_META_FILE_NAME = __webpack_exports__.ROUTE_META_FILE_NAME;
|
|
120
|
+
exports.findRouteMetaFiles = __webpack_exports__.findRouteMetaFiles;
|
|
121
|
+
exports.renderRouteMetadataManifest = __webpack_exports__.renderRouteMetadataManifest;
|
|
122
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
123
|
+
"ROUTE_METADATA_MANIFEST_FILE_NAME",
|
|
124
|
+
"ROUTE_METADATA_MANIFEST_HEADER",
|
|
125
|
+
"ROUTE_META_FILE_NAME",
|
|
126
|
+
"findRouteMetaFiles",
|
|
127
|
+
"renderRouteMetadataManifest"
|
|
128
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
129
|
+
Object.defineProperty(exports, '__esModule', {
|
|
130
|
+
value: true
|
|
131
|
+
});
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.n = (module)=>{
|
|
5
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
+
__webpack_require__.d(getter, {
|
|
7
|
+
a: getter
|
|
8
|
+
});
|
|
9
|
+
return getter;
|
|
10
|
+
};
|
|
11
|
+
})();
|
|
12
|
+
(()=>{
|
|
13
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
14
|
+
var define = (defs, kind)=>{
|
|
15
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
[kind]: defs[key]
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
define(getters, "get");
|
|
21
|
+
define(values, "value");
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
(()=>{
|
|
25
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
26
|
+
})();
|
|
27
|
+
(()=>{
|
|
28
|
+
__webpack_require__.r = (exports1)=>{
|
|
29
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
30
|
+
value: 'Module'
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
33
|
+
value: true
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
37
|
+
var __webpack_exports__ = {};
|
|
38
|
+
__webpack_require__.r(__webpack_exports__);
|
|
39
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
40
|
+
TANSTACK_SERVER_ROUTES_FILE: ()=>TANSTACK_SERVER_ROUTES_FILE,
|
|
41
|
+
createTanstackRscRouteLayerPlugin: ()=>createTanstackRscRouteLayerPlugin
|
|
42
|
+
});
|
|
43
|
+
const external_node_path_namespaceObject = require("node:path");
|
|
44
|
+
var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
|
|
45
|
+
const TANSTACK_SERVER_ROUTES_FILE = 'tanstack-routes.server.js';
|
|
46
|
+
function exactResource(...filenames) {
|
|
47
|
+
const escaped = filenames.map((filename)=>filename.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&'));
|
|
48
|
+
return new RegExp(`^(?:${escaped.join('|')})(?:\\?.*)?$`, 'u');
|
|
49
|
+
}
|
|
50
|
+
function createTanstackRscRouteLayerPlugin(getContext) {
|
|
51
|
+
return {
|
|
52
|
+
name: 'modern:tanstack:rsc-route-layer',
|
|
53
|
+
setup (api) {
|
|
54
|
+
api.modifyRspackConfig({
|
|
55
|
+
order: 'post',
|
|
56
|
+
handler (config, { environment, rspack, target }) {
|
|
57
|
+
const { entryNames, internalDirectory, rsc } = getContext();
|
|
58
|
+
if (false === rsc || void 0 === rsc || 0 === entryNames.length) return;
|
|
59
|
+
const rscServerEnvironment = 'object' == typeof rsc ? rsc.environments?.server ?? 'server' : 'server';
|
|
60
|
+
if ('node' !== target && 'node' !== config.target && environment.name !== rscServerEnvironment) return;
|
|
61
|
+
config.module ??= {};
|
|
62
|
+
config.module.rules ??= [];
|
|
63
|
+
config.plugins ??= [];
|
|
64
|
+
for (const entryName of entryNames){
|
|
65
|
+
const routes = external_node_path_default().resolve(internalDirectory, entryName, 'routes.js');
|
|
66
|
+
const serverRoutes = external_node_path_default().resolve(internalDirectory, entryName, TANSTACK_SERVER_ROUTES_FILE);
|
|
67
|
+
config.plugins.push(new rspack.NormalModuleReplacementPlugin(exactResource(routes), serverRoutes));
|
|
68
|
+
config.module.rules.push({
|
|
69
|
+
resource: exactResource(routes, serverRoutes),
|
|
70
|
+
layer: 'server-side-rendering'
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
exports.TANSTACK_SERVER_ROUTES_FILE = __webpack_exports__.TANSTACK_SERVER_ROUTES_FILE;
|
|
79
|
+
exports.createTanstackRscRouteLayerPlugin = __webpack_exports__.createTanstackRscRouteLayerPlugin;
|
|
80
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
81
|
+
"TANSTACK_SERVER_ROUTES_FILE",
|
|
82
|
+
"createTanstackRscRouteLayerPlugin"
|
|
83
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
84
|
+
Object.defineProperty(exports, '__esModule', {
|
|
85
|
+
value: true
|
|
86
|
+
});
|
|
@@ -30,6 +30,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
31
|
collectCanonicalRoutesForEntry: ()=>collectCanonicalRoutesForEntry
|
|
32
32
|
});
|
|
33
|
+
const routeDescriptor_js_namespaceObject = require("../../shared/routeDescriptor.js");
|
|
33
34
|
const external_shared_js_namespaceObject = require("./shared.js");
|
|
34
35
|
const LOCALE_PARAM_SEGMENTS = new Set([
|
|
35
36
|
':lang',
|
|
@@ -76,11 +77,13 @@ function collectCanonicalRoutesForEntry(routes, options = {}) {
|
|
|
76
77
|
const key = (0, external_shared_js_namespaceObject.toTanstackPath)(normalized);
|
|
77
78
|
if (!canonicalParams.has(key)) canonicalParams.set(key, paramsTypeForCanonicalPath(normalized));
|
|
78
79
|
};
|
|
79
|
-
const visit = (
|
|
80
|
+
const visit = (descriptor, parentPath)=>{
|
|
81
|
+
const { source: route, children } = descriptor;
|
|
80
82
|
let currentPath = parentPath;
|
|
81
|
-
|
|
83
|
+
const canonicalPath = route.modernLocalisedRoute?.canonicalPath ?? route.modernCanonicalPath;
|
|
84
|
+
if ('string' == typeof canonicalPath) {
|
|
82
85
|
hasI18nSurface = true;
|
|
83
|
-
currentPath = normalizeJoined(
|
|
86
|
+
currentPath = canonicalPath ? normalizeJoined(canonicalPath) : '';
|
|
84
87
|
} else if ('string' == typeof route.path && route.path.length > 0) {
|
|
85
88
|
const segments = route.path.replace(/\[(.+?)\]/g, ':$1').split('/').filter(Boolean);
|
|
86
89
|
if (localeParamHeuristic && '' === parentPath && LOCALE_PARAM_SEGMENTS.has(segments[0])) {
|
|
@@ -89,16 +92,13 @@ function collectCanonicalRoutesForEntry(routes, options = {}) {
|
|
|
89
92
|
}
|
|
90
93
|
currentPath = segments.length ? normalizeJoined(`${parentPath}/${segments.join('/')}`) : parentPath;
|
|
91
94
|
}
|
|
92
|
-
const children = route.children;
|
|
93
95
|
if (children && children.length > 0) {
|
|
94
96
|
for (const child of children)visit(child, currentPath);
|
|
95
97
|
return;
|
|
96
98
|
}
|
|
97
99
|
record(currentPath || '/');
|
|
98
100
|
};
|
|
99
|
-
const
|
|
100
|
-
const topLevel = rootModern ? rootModern.children ?? [] : routes;
|
|
101
|
-
for (const route of topLevel)visit(route, '');
|
|
101
|
+
for (const route of (0, routeDescriptor_js_namespaceObject.describeRouteTree)(routes).children)visit(route, '');
|
|
102
102
|
if (!hasI18nSurface || 0 === canonicalParams.size) return null;
|
|
103
103
|
return Object.fromEntries([
|
|
104
104
|
...canonicalParams.entries()
|
|
@@ -29,8 +29,6 @@ var __webpack_exports__ = {};
|
|
|
29
29
|
__webpack_require__.r(__webpack_exports__);
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
31
|
createRouteStaticDataSnippet: ()=>createRouteStaticDataSnippet,
|
|
32
|
-
isIndexRoute: ()=>isIndexRoute,
|
|
33
|
-
isPathlessLayout: ()=>isPathlessLayout,
|
|
34
32
|
normalizeRelativeImport: ()=>normalizeRelativeImport,
|
|
35
33
|
pickModernLoaderModule: ()=>pickModernLoaderModule,
|
|
36
34
|
pickRouteSearchContractModules: ()=>pickRouteSearchContractModules,
|
|
@@ -83,14 +81,6 @@ function pickRouteSearchContractModules(route) {
|
|
|
83
81
|
loaderDepsPath: 'string' == typeof loaderDepsPath ? loaderDepsPath : null
|
|
84
82
|
};
|
|
85
83
|
}
|
|
86
|
-
function isPathlessLayout(route) {
|
|
87
|
-
const extras = route;
|
|
88
|
-
return 'nested' === extras.type && 'boolean' != typeof extras.index && void 0 === extras.path;
|
|
89
|
-
}
|
|
90
|
-
function isIndexRoute(route) {
|
|
91
|
-
const extras = route;
|
|
92
|
-
return 'nested' === extras.type && Boolean(extras.index);
|
|
93
|
-
}
|
|
94
84
|
function createRouteStaticDataSnippet(opts) {
|
|
95
85
|
const staticData = (0, routeStaticData_js_namespaceObject.createRouteStaticData)({
|
|
96
86
|
modernRouteId: opts.modernRouteId && quote(opts.modernRouteId),
|
|
@@ -101,8 +91,6 @@ function createRouteStaticDataSnippet(opts) {
|
|
|
101
91
|
return entries.length > 0 ? `staticData: createRouteStaticData({\n ${entries.map(([key, value])=>`${key}: ${value},`).join('\n ')}\n }),` : null;
|
|
102
92
|
}
|
|
103
93
|
exports.createRouteStaticDataSnippet = __webpack_exports__.createRouteStaticDataSnippet;
|
|
104
|
-
exports.isIndexRoute = __webpack_exports__.isIndexRoute;
|
|
105
|
-
exports.isPathlessLayout = __webpack_exports__.isPathlessLayout;
|
|
106
94
|
exports.normalizeRelativeImport = __webpack_exports__.normalizeRelativeImport;
|
|
107
95
|
exports.pickModernLoaderModule = __webpack_exports__.pickModernLoaderModule;
|
|
108
96
|
exports.pickRouteSearchContractModules = __webpack_exports__.pickRouteSearchContractModules;
|
|
@@ -111,8 +99,6 @@ exports.resolveFileNoExt = __webpack_exports__.resolveFileNoExt;
|
|
|
111
99
|
exports.toTanstackPath = __webpack_exports__.toTanstackPath;
|
|
112
100
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
113
101
|
"createRouteStaticDataSnippet",
|
|
114
|
-
"isIndexRoute",
|
|
115
|
-
"isPathlessLayout",
|
|
116
102
|
"normalizeRelativeImport",
|
|
117
103
|
"pickModernLoaderModule",
|
|
118
104
|
"pickRouteSearchContractModules",
|
|
@@ -30,20 +30,14 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
31
|
generateTanstackRouterTypesSourceForEntry: ()=>generateTanstackRouterTypesSourceForEntry
|
|
32
32
|
});
|
|
33
|
-
const i18n_runtime_extensions_namespaceObject = require("@modern-js/i18n-runtime-extensions");
|
|
34
33
|
const cli_namespaceObject = require("@modern-js/runtime/cli");
|
|
35
34
|
const utils_namespaceObject = require("@modern-js/utils");
|
|
35
|
+
const routeDescriptor_js_namespaceObject = require("../../shared/routeDescriptor.js");
|
|
36
36
|
const external_shared_js_namespaceObject = require("./shared.js");
|
|
37
37
|
async function generateTanstackRouterTypesSourceForEntry(opts) {
|
|
38
|
-
const { appContext, entryName, generatedDirName = 'modern-tanstack', routes
|
|
39
|
-
const routes = (0, i18n_runtime_extensions_namespaceObject.canonicaliseLocalisedRoutes)(rawRoutes);
|
|
38
|
+
const { appContext, entryName, generatedDirName = 'modern-tanstack', routes } = opts;
|
|
40
39
|
const outDir = utils_namespaceObject.upath.join(appContext.srcDirectory, generatedDirName, entryName);
|
|
41
|
-
const rootModern =
|
|
42
|
-
const extras = r;
|
|
43
|
-
return r && 'nested' === extras.type && extras.isRoot;
|
|
44
|
-
});
|
|
45
|
-
const rootExtras = rootModern;
|
|
46
|
-
const topLevel = rootModern ? rootExtras?.children || [] : routes;
|
|
40
|
+
const { root: rootModern, children: topLevel } = (0, routeDescriptor_js_namespaceObject.describeRouteTree)(routes);
|
|
47
41
|
const imports = [];
|
|
48
42
|
const statements = [];
|
|
49
43
|
const loaderImportMap = new Map();
|
|
@@ -60,9 +54,8 @@ async function generateTanstackRouterTypesSourceForEntry(opts) {
|
|
|
60
54
|
let pendingImportName = componentImportMap.get(componentPath);
|
|
61
55
|
if (!pendingImportName) {
|
|
62
56
|
pendingImportName = (async ()=>{
|
|
63
|
-
const
|
|
64
|
-
if (!
|
|
65
|
-
const relImport = (0, external_shared_js_namespaceObject.normalizeRelativeImport)(utils_namespaceObject.upath.relative(outDir, resolvedNoExt));
|
|
57
|
+
const relImport = await resolveRouteImport(componentPath);
|
|
58
|
+
if (!relImport) return null;
|
|
66
59
|
const componentName = `component_${componentIndex++}`;
|
|
67
60
|
imports.push(`import ${componentName} from ${(0, external_shared_js_namespaceObject.quote)(relImport)};`);
|
|
68
61
|
return componentName;
|
|
@@ -71,14 +64,15 @@ async function generateTanstackRouterTypesSourceForEntry(opts) {
|
|
|
71
64
|
}
|
|
72
65
|
return pendingImportName;
|
|
73
66
|
};
|
|
74
|
-
const
|
|
67
|
+
const resolveRouteImport = async (aliasedNoExtPath)=>{
|
|
75
68
|
const prefix = `${appContext.internalSrcAlias}/`;
|
|
76
69
|
let absNoExt;
|
|
77
70
|
if (aliasedNoExtPath.startsWith(prefix)) {
|
|
78
71
|
const rel = aliasedNoExtPath.slice(prefix.length);
|
|
79
72
|
absNoExt = utils_namespaceObject.upath.join(appContext.srcDirectory, rel);
|
|
80
73
|
} else absNoExt = utils_namespaceObject.upath.isAbsolute(aliasedNoExtPath) ? aliasedNoExtPath : utils_namespaceObject.upath.join(appContext.srcDirectory, aliasedNoExtPath);
|
|
81
|
-
|
|
74
|
+
const resolvedNoExt = await (0, external_shared_js_namespaceObject.resolveFileNoExt)(absNoExt);
|
|
75
|
+
return resolvedNoExt ? (0, external_shared_js_namespaceObject.normalizeRelativeImport)(utils_namespaceObject.upath.relative(outDir, resolvedNoExt)) : null;
|
|
82
76
|
};
|
|
83
77
|
const getImportNamesForLoader = async (aliasedNoExtPath, inline, hasAction)=>{
|
|
84
78
|
const key = `${inline ? 'inline' : 'default'}:${hasAction ? 'action' : 'loader'}:${aliasedNoExtPath}`;
|
|
@@ -87,9 +81,8 @@ async function generateTanstackRouterTypesSourceForEntry(opts) {
|
|
|
87
81
|
loaderName: existing,
|
|
88
82
|
actionName: hasAction ? existing.replace(/^loader_/, 'action_') : null
|
|
89
83
|
};
|
|
90
|
-
const
|
|
91
|
-
if (!
|
|
92
|
-
const relImport = (0, external_shared_js_namespaceObject.normalizeRelativeImport)(utils_namespaceObject.upath.relative(outDir, resolvedNoExt));
|
|
84
|
+
const relImport = await resolveRouteImport(aliasedNoExtPath);
|
|
85
|
+
if (!relImport) return null;
|
|
93
86
|
const importName = `loader_${loaderIndex++}`;
|
|
94
87
|
const actionName = hasAction ? importName.replace(/^loader_/, 'action_') : null;
|
|
95
88
|
if (inline) {
|
|
@@ -109,9 +102,8 @@ async function generateTanstackRouterTypesSourceForEntry(opts) {
|
|
|
109
102
|
const key = `${exportName}:${aliasedNoExtPath}`;
|
|
110
103
|
const existing = searchContractImportMap.get(key);
|
|
111
104
|
if (existing) return existing;
|
|
112
|
-
const
|
|
113
|
-
if (!
|
|
114
|
-
const relImport = (0, external_shared_js_namespaceObject.normalizeRelativeImport)(utils_namespaceObject.upath.relative(outDir, resolvedNoExt));
|
|
105
|
+
const relImport = await resolveRouteImport(aliasedNoExtPath);
|
|
106
|
+
if (!relImport) return null;
|
|
115
107
|
const importName = 'validateSearch' === exportName ? `validateSearch_${validateSearchIndex++}` : `loaderDeps_${loaderDepsIndex++}`;
|
|
116
108
|
imports.push(`import { ${exportName} as ${importName} } from ${(0, external_shared_js_namespaceObject.quote)(relImport)};`);
|
|
117
109
|
searchContractImportMap.set(key, importName);
|
|
@@ -129,9 +121,7 @@ async function generateTanstackRouterTypesSourceForEntry(opts) {
|
|
|
129
121
|
const base = id ? (0, cli_namespaceObject.makeLegalIdentifier)(id) : `r_${routeIndex++}`;
|
|
130
122
|
return reserveRouteVarName(`route_${base}`);
|
|
131
123
|
};
|
|
132
|
-
const
|
|
133
|
-
const { parentVar, route } = opts;
|
|
134
|
-
const varName = createRouteVarName(route);
|
|
124
|
+
const createRouteOptions = async (route, hasSplat)=>{
|
|
135
125
|
const routeExtras = route;
|
|
136
126
|
const loaderInfo = (0, external_shared_js_namespaceObject.pickModernLoaderModule)(route);
|
|
137
127
|
const routeAction = routeExtras.action;
|
|
@@ -141,20 +131,9 @@ async function generateTanstackRouterTypesSourceForEntry(opts) {
|
|
|
141
131
|
const searchContractInfo = (0, external_shared_js_namespaceObject.pickRouteSearchContractModules)(route);
|
|
142
132
|
const validateSearchName = searchContractInfo.validateSearchPath ? await getImportNameForSearchContract(searchContractInfo.validateSearchPath, 'validateSearch') : null;
|
|
143
133
|
const loaderDepsName = searchContractInfo.loaderDepsPath ? await getImportNameForSearchContract(searchContractInfo.loaderDepsPath, 'loaderDeps') : null;
|
|
144
|
-
const
|
|
145
|
-
const hasSplat = 'string' == typeof rawPath && rawPath.includes('*');
|
|
146
|
-
const routeOpts = [
|
|
147
|
-
`getParentRoute: () => ${parentVar},`
|
|
148
|
-
];
|
|
134
|
+
const routeOpts = [];
|
|
149
135
|
const componentName = await getImportNameForComponent(routeExtras._component);
|
|
150
136
|
if (componentName) routeOpts.push(`component: ${componentName},`);
|
|
151
|
-
if ((0, external_shared_js_namespaceObject.isPathlessLayout)(route)) {
|
|
152
|
-
const id = routeExtras.id;
|
|
153
|
-
routeOpts.push(`id: ${(0, external_shared_js_namespaceObject.quote)(id || 'pathless')},`);
|
|
154
|
-
} else {
|
|
155
|
-
const p = (0, external_shared_js_namespaceObject.isIndexRoute)(route) ? '/' : (0, external_shared_js_namespaceObject.toTanstackPath)(rawPath || '');
|
|
156
|
-
routeOpts.push(`path: ${(0, external_shared_js_namespaceObject.quote)(p)},`);
|
|
157
|
-
}
|
|
158
137
|
if (loaderName) routeOpts.push(`loader: modernLoaderToTanstack({ hasSplat: ${hasSplat} }, ${loaderName}),`);
|
|
159
138
|
if (validateSearchName) routeOpts.push(`validateSearch: ${validateSearchName},`);
|
|
160
139
|
if (loaderDepsName) routeOpts.push(`loaderDeps: ${loaderDepsName},`);
|
|
@@ -164,39 +143,29 @@ async function generateTanstackRouterTypesSourceForEntry(opts) {
|
|
|
164
143
|
actionName
|
|
165
144
|
});
|
|
166
145
|
if (staticDataSnippet) routeOpts.push(staticDataSnippet);
|
|
167
|
-
|
|
146
|
+
return routeOpts;
|
|
147
|
+
};
|
|
148
|
+
const buildRoute = async (descriptor, parentVar)=>{
|
|
149
|
+
const { source: route, location, hasSplat, children } = descriptor;
|
|
150
|
+
const varName = createRouteVarName(route);
|
|
151
|
+
const routeOpts = [
|
|
152
|
+
`getParentRoute: () => ${parentVar},`,
|
|
153
|
+
...Object.entries(location).map(([key, value])=>`${key}: ${(0, external_shared_js_namespaceObject.quote)(value)},`),
|
|
154
|
+
...await createRouteOptions(route, hasSplat)
|
|
155
|
+
];
|
|
168
156
|
const hasChildren = Boolean(children && children.length > 0);
|
|
169
157
|
const routeCtorVarName = hasChildren ? reserveRouteVarName(`${varName}__base`) : varName;
|
|
170
158
|
statements.push(`const ${routeCtorVarName} = createRoute({\n ${routeOpts.join('\n ')}\n});`);
|
|
171
159
|
if (children && children.length > 0) {
|
|
172
160
|
const childVars = [];
|
|
173
|
-
for (const child of children)childVars.push(await buildRoute(
|
|
174
|
-
parentVar: routeCtorVarName,
|
|
175
|
-
route: child
|
|
176
|
-
}));
|
|
161
|
+
for (const child of children)childVars.push(await buildRoute(child, routeCtorVarName));
|
|
177
162
|
statements.push(`const ${varName} = ${routeCtorVarName}.addChildren([${childVars.join(', ')}]);`);
|
|
178
163
|
}
|
|
179
164
|
return varName;
|
|
180
165
|
};
|
|
181
|
-
const rootLoaderInfo = rootModern ? (0, external_shared_js_namespaceObject.pickModernLoaderModule)(rootModern) : null;
|
|
182
|
-
const rootAction = rootExtras?.action;
|
|
183
|
-
const rootLoaderImports = rootLoaderInfo?.loaderPath ? await getImportNamesForLoader(rootLoaderInfo.loaderPath, rootLoaderInfo.inline, Boolean(rootLoaderInfo.inline && rootAction === rootLoaderInfo.loaderPath)) : null;
|
|
184
|
-
const rootLoaderName = rootLoaderImports?.loaderName || null;
|
|
185
|
-
const rootActionName = rootLoaderImports?.actionName || null;
|
|
186
|
-
const rootSearchContractInfo = rootModern ? (0, external_shared_js_namespaceObject.pickRouteSearchContractModules)(rootModern) : null;
|
|
187
|
-
const rootValidateSearchName = rootSearchContractInfo?.validateSearchPath ? await getImportNameForSearchContract(rootSearchContractInfo.validateSearchPath, 'validateSearch') : null;
|
|
188
|
-
const rootLoaderDepsName = rootSearchContractInfo?.loaderDepsPath ? await getImportNameForSearchContract(rootSearchContractInfo.loaderDepsPath, 'loaderDeps') : null;
|
|
189
166
|
const topLevelVars = [];
|
|
190
|
-
for (const route of topLevel)topLevelVars.push(await buildRoute(
|
|
191
|
-
|
|
192
|
-
route
|
|
193
|
-
}));
|
|
194
|
-
const rootOpts = [];
|
|
195
|
-
const rootComponentName = await getImportNameForComponent(rootExtras?._component);
|
|
196
|
-
if (rootComponentName) rootOpts.push(`component: ${rootComponentName},`);
|
|
197
|
-
if (rootLoaderName) rootOpts.push(`loader: modernLoaderToTanstack({ hasSplat: false }, ${rootLoaderName}),`);
|
|
198
|
-
if (rootValidateSearchName) rootOpts.push(`validateSearch: ${rootValidateSearchName},`);
|
|
199
|
-
if (rootLoaderDepsName) rootOpts.push(`loaderDeps: ${rootLoaderDepsName},`);
|
|
167
|
+
for (const route of topLevel)topLevelVars.push(await buildRoute(route, 'rootRoute'));
|
|
168
|
+
const rootOpts = rootModern ? await createRouteOptions(rootModern, false) : [];
|
|
200
169
|
const routerGenTs = `// This file is auto-generated by Modern.js. Do not edit manually.
|
|
201
170
|
|
|
202
171
|
import {
|
|
@@ -213,11 +182,7 @@ ${imports.join('\n')}
|
|
|
213
182
|
|
|
214
183
|
export const rootRoute = createRootRouteWithContext<ModernRouterContext>()({
|
|
215
184
|
${rootOpts.join('\n ')}
|
|
216
|
-
|
|
217
|
-
modernRouteId: rootExtras?.id,
|
|
218
|
-
loaderName: rootLoaderName,
|
|
219
|
-
actionName: rootActionName
|
|
220
|
-
}) || ''}
|
|
185
|
+
|
|
221
186
|
});
|
|
222
187
|
|
|
223
188
|
${statements.join('\n\n')}
|
|
@@ -30,7 +30,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
31
|
applyRouterRuntimeState: ()=>router_state_namespaceObject.applyRouterRuntimeState,
|
|
32
32
|
applyRouterServerPrepareResult: ()=>router_state_namespaceObject.applyRouterServerPrepareResult,
|
|
33
|
-
createRouterRuntimeState: ()=>router_state_namespaceObject.createRouterRuntimeState,
|
|
34
33
|
createRouterServerSnapshot: ()=>router_state_namespaceObject.createRouterServerSnapshot,
|
|
35
34
|
getRouterRuntimeState: ()=>router_state_namespaceObject.getRouterRuntimeState,
|
|
36
35
|
getRouterServerSnapshot: ()=>router_state_namespaceObject.getRouterServerSnapshot
|
|
@@ -38,14 +37,12 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
38
37
|
const router_state_namespaceObject = require("@modern-js/runtime-extensions/router-state");
|
|
39
38
|
exports.applyRouterRuntimeState = __webpack_exports__.applyRouterRuntimeState;
|
|
40
39
|
exports.applyRouterServerPrepareResult = __webpack_exports__.applyRouterServerPrepareResult;
|
|
41
|
-
exports.createRouterRuntimeState = __webpack_exports__.createRouterRuntimeState;
|
|
42
40
|
exports.createRouterServerSnapshot = __webpack_exports__.createRouterServerSnapshot;
|
|
43
41
|
exports.getRouterRuntimeState = __webpack_exports__.getRouterRuntimeState;
|
|
44
42
|
exports.getRouterServerSnapshot = __webpack_exports__.getRouterServerSnapshot;
|
|
45
43
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
46
44
|
"applyRouterRuntimeState",
|
|
47
45
|
"applyRouterServerPrepareResult",
|
|
48
|
-
"createRouterRuntimeState",
|
|
49
46
|
"createRouterServerSnapshot",
|
|
50
47
|
"getRouterRuntimeState",
|
|
51
48
|
"getRouterServerSnapshot"
|