@bleedingdev/modern-js-plugin-tanstack 3.2.0-ultramodern.98 → 3.4.0-ultramodern.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cli/index.js +80 -34
- package/dist/cjs/cli/routeSplitting.js +13 -41
- package/dist/cjs/cli/tanstackTypes.js +114 -200
- package/dist/cjs/cli.js +12 -8
- package/dist/cjs/runtime/basepathRewrite.js +12 -8
- package/dist/cjs/runtime/dataMutation.js +9 -5
- package/dist/cjs/runtime/hooks.js +20 -19
- package/dist/cjs/runtime/hydrationBoundary.js +12 -7
- package/dist/cjs/runtime/index.js +66 -54
- package/dist/cjs/runtime/lifecycle.js +21 -91
- package/dist/cjs/runtime/loaderBridge.js +173 -0
- package/dist/cjs/runtime/outlet.js +58 -0
- package/dist/cjs/runtime/plugin.js +190 -110
- package/dist/cjs/runtime/plugin.node.js +25 -40
- package/dist/cjs/runtime/plugin.worker.js +9 -5
- package/dist/cjs/runtime/pluginCore.js +55 -0
- package/dist/cjs/runtime/prefetchLink.js +10 -6
- package/dist/cjs/runtime/register.js +56 -0
- package/dist/cjs/runtime/routeTree.js +30 -212
- package/dist/cjs/runtime/router.js +41 -0
- package/dist/cjs/runtime/rsc/ClientSlot.js +9 -5
- package/dist/cjs/runtime/rsc/CompositeComponent.js +9 -5
- package/dist/cjs/runtime/rsc/ReplayableStream.js +14 -9
- package/dist/cjs/runtime/rsc/RscNodeRenderer.js +9 -5
- package/dist/cjs/runtime/rsc/SlotContext.js +9 -5
- package/dist/cjs/runtime/rsc/client.js +9 -5
- package/dist/cjs/runtime/rsc/createRscProxy.js +9 -5
- package/dist/cjs/runtime/rsc/index.js +9 -5
- package/dist/cjs/runtime/rsc/payloadRouter.js +44 -6
- package/dist/cjs/runtime/rsc/server.js +9 -5
- package/dist/cjs/runtime/rsc/slotUsageSanitizer.js +9 -5
- package/dist/cjs/runtime/rsc/symbols.js +20 -15
- package/dist/cjs/runtime/state.js +45 -0
- package/dist/cjs/runtime/types.js +13 -9
- package/dist/cjs/runtime/utils.js +9 -11
- package/dist/cjs/runtime.js +9 -5
- package/dist/esm/cli/index.mjs +73 -28
- package/dist/esm/cli/routeSplitting.mjs +1 -30
- package/dist/esm/cli/tanstackTypes.mjs +100 -190
- package/dist/esm/runtime/hooks.mjs +1 -8
- package/dist/esm/runtime/hydrationBoundary.mjs +3 -2
- package/dist/esm/runtime/index.mjs +4 -2
- package/dist/esm/runtime/lifecycle.mjs +1 -82
- package/dist/esm/runtime/loaderBridge.mjs +114 -0
- package/dist/esm/runtime/outlet.mjs +17 -0
- package/dist/esm/runtime/plugin.mjs +183 -107
- package/dist/esm/runtime/plugin.node.mjs +19 -38
- package/dist/esm/runtime/pluginCore.mjs +14 -0
- package/dist/esm/runtime/prefetchLink.mjs +1 -1
- package/dist/esm/runtime/register.mjs +18 -0
- package/dist/esm/runtime/routeTree.mjs +15 -198
- package/dist/esm/runtime/router.mjs +2 -0
- package/dist/esm/runtime/rsc/payloadRouter.mjs +35 -1
- package/dist/esm/runtime/state.mjs +7 -0
- package/dist/esm/runtime/utils.mjs +0 -6
- package/dist/esm-node/cli/index.mjs +73 -28
- package/dist/esm-node/cli/routeSplitting.mjs +1 -30
- package/dist/esm-node/cli/tanstackTypes.mjs +100 -190
- package/dist/esm-node/runtime/hooks.mjs +1 -8
- package/dist/esm-node/runtime/hydrationBoundary.mjs +3 -2
- package/dist/esm-node/runtime/index.mjs +4 -2
- package/dist/esm-node/runtime/lifecycle.mjs +1 -82
- package/dist/esm-node/runtime/loaderBridge.mjs +115 -0
- package/dist/esm-node/runtime/outlet.mjs +18 -0
- package/dist/esm-node/runtime/plugin.mjs +183 -107
- package/dist/esm-node/runtime/plugin.node.mjs +19 -38
- package/dist/esm-node/runtime/pluginCore.mjs +15 -0
- package/dist/esm-node/runtime/prefetchLink.mjs +1 -1
- package/dist/esm-node/runtime/register.mjs +19 -0
- package/dist/esm-node/runtime/routeTree.mjs +15 -198
- package/dist/esm-node/runtime/router.mjs +3 -0
- package/dist/esm-node/runtime/rsc/payloadRouter.mjs +35 -1
- package/dist/esm-node/runtime/state.mjs +8 -0
- package/dist/esm-node/runtime/utils.mjs +0 -6
- package/dist/types/cli/index.d.ts +11 -2
- package/dist/types/cli/routeSplitting.d.ts +6 -15
- package/dist/types/cli/tanstackTypes.d.ts +21 -1
- package/dist/types/runtime/hooks.d.ts +8 -33
- package/dist/types/runtime/index.d.ts +6 -3
- package/dist/types/runtime/lifecycle.d.ts +7 -22
- package/dist/types/runtime/loaderBridge.d.ts +48 -0
- package/dist/types/runtime/outlet.d.ts +2 -0
- package/dist/types/runtime/plugin.d.ts +1 -14
- package/dist/types/runtime/plugin.node.d.ts +1 -14
- package/dist/types/runtime/pluginCore.d.ts +21 -0
- package/dist/types/runtime/register.d.ts +9 -0
- package/dist/types/runtime/routeTree.d.ts +0 -2
- package/dist/types/runtime/router.d.ts +14 -0
- package/dist/types/runtime/state.d.ts +16 -0
- package/dist/types/runtime/types.d.ts +7 -53
- package/package.json +40 -38
- package/rstest.config.mts +6 -0
- package/src/cli/index.ts +146 -24
- package/src/cli/routeSplitting.ts +6 -44
- package/src/cli/tanstackTypes.ts +203 -208
- package/src/runtime/hooks.ts +10 -27
- package/src/runtime/hydrationBoundary.tsx +5 -5
- package/src/runtime/index.tsx +12 -14
- package/src/runtime/lifecycle.ts +16 -151
- package/src/runtime/loaderBridge.ts +257 -0
- package/src/runtime/outlet.tsx +48 -0
- package/src/runtime/plugin.node.tsx +28 -83
- package/src/runtime/plugin.tsx +350 -202
- package/src/runtime/pluginCore.ts +48 -0
- package/src/runtime/prefetchLink.tsx +1 -1
- package/src/runtime/register.ts +58 -0
- package/src/runtime/routeTree.ts +41 -365
- package/src/runtime/router.ts +15 -0
- package/src/runtime/rsc/payloadRouter.ts +45 -2
- package/src/runtime/ssr-shim.d.ts +1 -3
- package/src/runtime/state.ts +29 -0
- package/src/runtime/types.ts +20 -67
- package/src/runtime/utils.tsx +3 -7
- package/tests/router/cli.test.ts +373 -31
- package/tests/router/hooks.test.ts +26 -0
- package/tests/router/loaderBridge.test.ts +211 -0
- package/tests/router/packageSurface.test.ts +24 -0
- package/tests/router/prefetchLink.test.tsx +43 -7
- package/tests/router/register.test.ts +46 -0
- package/tests/router/routeTree.test.ts +176 -139
- package/tests/router/rsc.test.tsx +70 -0
- package/tests/router/tanstackTypes.test.ts +395 -7
- package/dist/cjs/runtime/DefaultNotFound.js +0 -47
- package/dist/esm/runtime/DefaultNotFound.mjs +0 -13
- package/dist/esm-node/runtime/DefaultNotFound.mjs +0 -14
- package/dist/types/runtime/DefaultNotFound.d.ts +0 -2
- package/src/runtime/DefaultNotFound.tsx +0 -15
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -31,6 +35,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
31
35
|
loadTanstackRscPayload: ()=>loadTanstackRscPayload,
|
|
32
36
|
loadTanstackRscRouteData: ()=>loadTanstackRscRouteData
|
|
33
37
|
});
|
|
38
|
+
const router_namespaceObject = require("@modern-js/runtime-utils/router");
|
|
34
39
|
const react_router_namespaceObject = require("@tanstack/react-router");
|
|
35
40
|
const payloadFetchCache = new Map();
|
|
36
41
|
let payloadDecoder;
|
|
@@ -70,6 +75,39 @@ function toPayloadRoute(match) {
|
|
|
70
75
|
pathnameBase: 'string' == typeof match.pathnameBase ? match.pathnameBase : pathname
|
|
71
76
|
};
|
|
72
77
|
}
|
|
78
|
+
function shouldRedactServerError(status = 500) {
|
|
79
|
+
return status >= 500 && 'development' !== process.env.NODE_ENV && 'test' !== process.env.NODE_ENV;
|
|
80
|
+
}
|
|
81
|
+
function serializePayloadError(error) {
|
|
82
|
+
if ((0, router_namespaceObject.isRouteErrorResponse)(error)) {
|
|
83
|
+
if (shouldRedactServerError(error.status)) return {
|
|
84
|
+
status: error.status,
|
|
85
|
+
statusText: 'Internal Server Error',
|
|
86
|
+
data: 'Unexpected Server Error',
|
|
87
|
+
__type: 'RouteErrorResponse'
|
|
88
|
+
};
|
|
89
|
+
return {
|
|
90
|
+
...error,
|
|
91
|
+
__type: 'RouteErrorResponse'
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
if (error instanceof Error) {
|
|
95
|
+
if (shouldRedactServerError()) return {
|
|
96
|
+
message: 'Unexpected Server Error',
|
|
97
|
+
stack: void 0,
|
|
98
|
+
__type: 'Error'
|
|
99
|
+
};
|
|
100
|
+
return {
|
|
101
|
+
message: error.message,
|
|
102
|
+
stack: error.stack,
|
|
103
|
+
__type: 'Error',
|
|
104
|
+
...'Error' !== error.name ? {
|
|
105
|
+
__subType: error.name
|
|
106
|
+
} : {}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
return error;
|
|
110
|
+
}
|
|
73
111
|
function createTanstackRscServerPayload(router, options = {}) {
|
|
74
112
|
const matches = Array.isArray(router.state?.matches) ? router.state.matches : [];
|
|
75
113
|
const routes = [];
|
|
@@ -80,7 +118,7 @@ function createTanstackRscServerPayload(router, options = {}) {
|
|
|
80
118
|
if (payloadRoute) {
|
|
81
119
|
routes.push(payloadRoute);
|
|
82
120
|
if ('loaderData' in match && void 0 !== match.loaderData && !(options.omitClientLoaderData && payloadRoute.hasClientLoader)) loaderData[payloadRoute.id] = match.loaderData;
|
|
83
|
-
if (void 0 !== match.error) errors[payloadRoute.id] = match.error;
|
|
121
|
+
if (void 0 !== match.error) errors[payloadRoute.id] = serializePayloadError(match.error);
|
|
84
122
|
}
|
|
85
123
|
}
|
|
86
124
|
return {
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -23,16 +27,6 @@ var __webpack_require__ = {};
|
|
|
23
27
|
})();
|
|
24
28
|
var __webpack_exports__ = {};
|
|
25
29
|
__webpack_require__.r(__webpack_exports__);
|
|
26
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
RENDERABLE_RSC: ()=>RENDERABLE_RSC,
|
|
28
|
-
RSC_PROXY_GET_TREE: ()=>RSC_PROXY_GET_TREE,
|
|
29
|
-
RSC_PROXY_PATH: ()=>RSC_PROXY_PATH,
|
|
30
|
-
RSC_SLOT_USAGES: ()=>RSC_SLOT_USAGES,
|
|
31
|
-
RSC_SLOT_USAGES_STREAM: ()=>RSC_SLOT_USAGES_STREAM,
|
|
32
|
-
SERVER_COMPONENT_STREAM: ()=>SERVER_COMPONENT_STREAM,
|
|
33
|
-
isRenderableServerComponent: ()=>isRenderableServerComponent,
|
|
34
|
-
isServerComponent: ()=>isServerComponent
|
|
35
|
-
});
|
|
36
30
|
const SERVER_COMPONENT_STREAM = Symbol.for('modern.tanstack.rsc.stream');
|
|
37
31
|
const RENDERABLE_RSC = Symbol.for('modern.tanstack.rsc.renderable');
|
|
38
32
|
const RSC_PROXY_GET_TREE = Symbol.for('modern.tanstack.rsc.proxy.getTree');
|
|
@@ -49,6 +43,17 @@ function isRenderableServerComponent(value) {
|
|
|
49
43
|
if ('object' != typeof value && 'function' != typeof value) return false;
|
|
50
44
|
return RENDERABLE_RSC in value && true === value[RENDERABLE_RSC];
|
|
51
45
|
}
|
|
46
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
47
|
+
isRenderableServerComponent: ()=>isRenderableServerComponent,
|
|
48
|
+
isServerComponent: ()=>isServerComponent
|
|
49
|
+
}, {
|
|
50
|
+
RENDERABLE_RSC: RENDERABLE_RSC,
|
|
51
|
+
RSC_PROXY_GET_TREE: RSC_PROXY_GET_TREE,
|
|
52
|
+
RSC_PROXY_PATH: RSC_PROXY_PATH,
|
|
53
|
+
RSC_SLOT_USAGES: RSC_SLOT_USAGES,
|
|
54
|
+
RSC_SLOT_USAGES_STREAM: RSC_SLOT_USAGES_STREAM,
|
|
55
|
+
SERVER_COMPONENT_STREAM: SERVER_COMPONENT_STREAM
|
|
56
|
+
});
|
|
52
57
|
exports.RENDERABLE_RSC = __webpack_exports__.RENDERABLE_RSC;
|
|
53
58
|
exports.RSC_PROXY_GET_TREE = __webpack_exports__.RSC_PROXY_GET_TREE;
|
|
54
59
|
exports.RSC_PROXY_PATH = __webpack_exports__.RSC_PROXY_PATH;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
13
|
+
};
|
|
14
|
+
})();
|
|
15
|
+
(()=>{
|
|
16
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
+
})();
|
|
18
|
+
(()=>{
|
|
19
|
+
__webpack_require__.r = (exports1)=>{
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
+
value: 'Module'
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
+
value: true
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
28
|
+
var __webpack_exports__ = {};
|
|
29
|
+
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
+
getTanstackRouterState: ()=>getTanstackRouterState
|
|
32
|
+
});
|
|
33
|
+
const context_namespaceObject = require("@modern-js/runtime/context");
|
|
34
|
+
function getTanstackRouterState(context) {
|
|
35
|
+
const state = (0, context_namespaceObject.getRouterRuntimeState)(context);
|
|
36
|
+
if (void 0 === state || 'tanstack' !== state.framework) return;
|
|
37
|
+
return state;
|
|
38
|
+
}
|
|
39
|
+
exports.getTanstackRouterState = __webpack_exports__.getTanstackRouterState;
|
|
40
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
41
|
+
"getTanstackRouterState"
|
|
42
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
43
|
+
Object.defineProperty(exports, '__esModule', {
|
|
44
|
+
value: true
|
|
45
|
+
});
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
9
13
|
};
|
|
10
14
|
})();
|
|
11
15
|
(()=>{
|
|
@@ -23,16 +27,16 @@ var __webpack_require__ = {};
|
|
|
23
27
|
})();
|
|
24
28
|
var __webpack_exports__ = {};
|
|
25
29
|
__webpack_require__.r(__webpack_exports__);
|
|
26
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
getModernTanstackRouterFastDefaults: ()=>getModernTanstackRouterFastDefaults,
|
|
28
|
-
modernTanstackRouterFastDefaults: ()=>modernTanstackRouterFastDefaults
|
|
29
|
-
});
|
|
30
30
|
const modernTanstackRouterFastDefaults = {
|
|
31
31
|
defaultStructuralSharing: true
|
|
32
32
|
};
|
|
33
33
|
const getModernTanstackRouterFastDefaults = (config = {})=>({
|
|
34
34
|
defaultStructuralSharing: config.defaultStructuralSharing ?? modernTanstackRouterFastDefaults.defaultStructuralSharing
|
|
35
35
|
});
|
|
36
|
+
__webpack_require__.d(__webpack_exports__, {}, {
|
|
37
|
+
getModernTanstackRouterFastDefaults: getModernTanstackRouterFastDefaults,
|
|
38
|
+
modernTanstackRouterFastDefaults: modernTanstackRouterFastDefaults
|
|
39
|
+
});
|
|
36
40
|
exports.getModernTanstackRouterFastDefaults = __webpack_exports__.getModernTanstackRouterFastDefaults;
|
|
37
41
|
exports.modernTanstackRouterFastDefaults = __webpack_exports__.modernTanstackRouterFastDefaults;
|
|
38
42
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
|
|
|
10
10
|
};
|
|
11
11
|
})();
|
|
12
12
|
(()=>{
|
|
13
|
-
__webpack_require__.d = (exports1,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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");
|
|
18
22
|
};
|
|
19
23
|
})();
|
|
20
24
|
(()=>{
|
|
@@ -41,7 +45,6 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
41
45
|
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
|
|
42
46
|
const external_react_namespaceObject = require("react");
|
|
43
47
|
var external_react_default = /*#__PURE__*/ __webpack_require__.n(external_react_namespaceObject);
|
|
44
|
-
const external_DefaultNotFound_js_namespaceObject = require("./DefaultNotFound.js");
|
|
45
48
|
function getRouteObjects(routes, { globalApp, ssrMode, props }) {
|
|
46
49
|
const createLayoutElement = (Component)=>{
|
|
47
50
|
const GlobalLayout = globalApp;
|
|
@@ -62,7 +65,6 @@ function getRouteObjects(routes, { globalApp, ssrMode, props }) {
|
|
|
62
65
|
id: route.id,
|
|
63
66
|
loader: route.loader,
|
|
64
67
|
action: route.action,
|
|
65
|
-
hasErrorBoundary: route.hasErrorBoundary,
|
|
66
68
|
shouldRevalidate: route.shouldRevalidate,
|
|
67
69
|
handle: {
|
|
68
70
|
...route.handle,
|
|
@@ -98,10 +100,6 @@ function getRouteObjects(routes, { globalApp, ssrMode, props }) {
|
|
|
98
100
|
};
|
|
99
101
|
routeObjects.push(routeObject);
|
|
100
102
|
}
|
|
101
|
-
routeObjects.push({
|
|
102
|
-
path: '*',
|
|
103
|
-
element: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_DefaultNotFound_js_namespaceObject.DefaultNotFound, {})
|
|
104
|
-
});
|
|
105
103
|
return routeObjects;
|
|
106
104
|
}
|
|
107
105
|
function createRouteObjectsFromConfig({ routesConfig, props, ssrMode }) {
|
package/dist/cjs/runtime.js
CHANGED
|
@@ -24,11 +24,15 @@ function __webpack_require__(moduleId) {
|
|
|
24
24
|
};
|
|
25
25
|
})();
|
|
26
26
|
(()=>{
|
|
27
|
-
__webpack_require__.d = (exports1,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
28
|
+
var define = (defs, kind)=>{
|
|
29
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
[kind]: defs[key]
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
define(getters, "get");
|
|
35
|
+
define(values, "value");
|
|
32
36
|
};
|
|
33
37
|
})();
|
|
34
38
|
(()=>{
|
package/dist/esm/cli/index.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import node_path from "node:path";
|
|
2
2
|
import { NESTED_ROUTE_SPEC_FILE, filterRoutesForServer, fs } from "@modern-js/utils";
|
|
3
|
-
import { createTanstackRsbuildRouteSplittingProfile,
|
|
4
|
-
import {
|
|
3
|
+
import { createTanstackRsbuildRouteSplittingProfile, resolveTanstackRouteCodeSplittingEnabled } from "./routeSplitting.mjs";
|
|
4
|
+
import { collectCanonicalRoutesForEntry, generateTanstackRouterTypesSourceForEntry } from "./tanstackTypes.mjs";
|
|
5
5
|
import { __webpack_require__ } from "../rslib-runtime.mjs";
|
|
6
6
|
import * as __rspack_external__modern_js_runtime_cli_401ee077 from "@modern-js/runtime/cli";
|
|
7
7
|
__webpack_require__.add({
|
|
8
|
-
|
|
8
|
+
2320 (module) {
|
|
9
9
|
module.exports = __rspack_external__modern_js_runtime_cli_401ee077;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
@@ -15,8 +15,8 @@ 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__(
|
|
19
|
-
if (cli.handleGeneratorEntryCode && cli.getEntrypointRoutesDir) {
|
|
18
|
+
const cli = __webpack_require__(2320);
|
|
19
|
+
if (cli.handleGeneratorEntryCode && cli.getEntrypointRoutesDir && cli.getEntrypointRoutesOwner) {
|
|
20
20
|
runtimeRouterCli = cli;
|
|
21
21
|
return runtimeRouterCli;
|
|
22
22
|
}
|
|
@@ -32,6 +32,14 @@ async function writeFileIfChanged(filePath, content) {
|
|
|
32
32
|
function createRegisterDtsContent(opts) {
|
|
33
33
|
const importStatements = opts.entries.map((entryName, index)=>`import type { router as router${index} } from './${entryName}/router.gen';`).join('\n');
|
|
34
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
|
+
` : '';
|
|
35
43
|
return `// This file is auto-generated by Modern.js. Do not edit manually.
|
|
36
44
|
|
|
37
45
|
${importStatements}
|
|
@@ -41,19 +49,21 @@ declare module '${opts.runtimeModule}' {
|
|
|
41
49
|
router: ${routerUnionType};
|
|
42
50
|
}
|
|
43
51
|
}
|
|
44
|
-
`;
|
|
52
|
+
${canonicalRoutesAugmentation}`;
|
|
45
53
|
}
|
|
46
54
|
async function writeTanstackRegisterFile(opts) {
|
|
47
|
-
const { entries, generatedDirName = DEFAULT_GENERATED_DIR_NAME, runtimeModule = '@modern-js/plugin-tanstack/runtime', srcDirectory } = opts;
|
|
55
|
+
const { entries, generatedDirName = DEFAULT_GENERATED_DIR_NAME, runtimeModule = '@modern-js/plugin-tanstack/runtime', srcDirectory, canonicalRoutes, i18nRuntimeModule } = opts;
|
|
48
56
|
if (0 === entries.length) return;
|
|
49
57
|
const registerDtsPath = node_path.join(srcDirectory, generatedDirName, 'register.gen.d.ts');
|
|
50
58
|
await writeFileIfChanged(registerDtsPath, createRegisterDtsContent({
|
|
51
59
|
entries,
|
|
52
|
-
runtimeModule
|
|
60
|
+
runtimeModule,
|
|
61
|
+
canonicalRoutes,
|
|
62
|
+
i18nRuntimeModule
|
|
53
63
|
}));
|
|
54
64
|
}
|
|
55
65
|
async function writeTanstackRouterTypesForEntries(opts) {
|
|
56
|
-
const { appContext, generatedDirName = DEFAULT_GENERATED_DIR_NAME, routesByEntry } = opts;
|
|
66
|
+
const { appContext, generatedDirName = DEFAULT_GENERATED_DIR_NAME, routesByEntry, i18nPluginInstalled = false } = opts;
|
|
57
67
|
const entryNames = Object.keys(routesByEntry);
|
|
58
68
|
await Promise.all(entryNames.map(async (entryName)=>{
|
|
59
69
|
const { routerGenTs } = await generateTanstackRouterTypesSourceForEntry({
|
|
@@ -70,10 +80,21 @@ async function writeTanstackRouterTypesForEntries(opts) {
|
|
|
70
80
|
if (mainEntryName && b === mainEntryName) return 1;
|
|
71
81
|
return a.localeCompare(b);
|
|
72
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
|
+
}
|
|
73
93
|
await writeTanstackRegisterFile({
|
|
74
94
|
entries: registerEntries,
|
|
75
95
|
generatedDirName,
|
|
76
|
-
srcDirectory: appContext.srcDirectory
|
|
96
|
+
srcDirectory: appContext.srcDirectory,
|
|
97
|
+
canonicalRoutes
|
|
77
98
|
});
|
|
78
99
|
}
|
|
79
100
|
function tanstackRouterPlugin(options = {}) {
|
|
@@ -91,16 +112,42 @@ function tanstackRouterPlugin(options = {}) {
|
|
|
91
112
|
const { getEntrypointRoutesDir } = getRuntimeRouterCli();
|
|
92
113
|
return getEntrypointRoutesDir(entrypoint) === routesDir;
|
|
93
114
|
};
|
|
115
|
+
const isForeignRouteEntrypoint = (entrypoint)=>{
|
|
116
|
+
const { getEntrypointRoutesDir, getEntrypointRoutesOwner } = getRuntimeRouterCli();
|
|
117
|
+
if (getEntrypointRoutesOwner(entrypoint)) return true;
|
|
118
|
+
if (entrypoint.pageRoutesEntry) return true;
|
|
119
|
+
return null !== getEntrypointRoutesDir(entrypoint);
|
|
120
|
+
};
|
|
121
|
+
const isI18nPluginInstalled = ()=>{
|
|
122
|
+
const { plugins } = api.getAppContext();
|
|
123
|
+
return Boolean(plugins?.some((plugin)=>plugin?.name === '@modern-js/plugin-i18n'));
|
|
124
|
+
};
|
|
94
125
|
api._internalRuntimePlugins(({ entrypoint, plugins })=>{
|
|
95
|
-
|
|
126
|
+
const { metaName, serverRoutes } = api.getAppContext();
|
|
127
|
+
const serverBase = serverRoutes.filter((route)=>route.entryName === entrypoint.entryName).map((route)=>route.urlPath).sort((a, b)=>a.length - b.length > 0 ? -1 : 1);
|
|
128
|
+
if (isTanstackEntrypoint(entrypoint)) {
|
|
129
|
+
plugins.push({
|
|
130
|
+
name: 'tanstackRouter',
|
|
131
|
+
path: `@${metaName}/plugin-tanstack/runtime`,
|
|
132
|
+
config: {
|
|
133
|
+
serverBase
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
return {
|
|
137
|
+
entrypoint,
|
|
138
|
+
plugins
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
if (isForeignRouteEntrypoint(entrypoint)) return {
|
|
96
142
|
entrypoint,
|
|
97
143
|
plugins
|
|
98
144
|
};
|
|
99
|
-
const {
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
145
|
+
const routerWrapperPath = `@${metaName}/plugin-tanstack/runtime/router`;
|
|
146
|
+
const existingRouterPlugin = plugins.find((plugin)=>'router' === plugin.name);
|
|
147
|
+
if (existingRouterPlugin) existingRouterPlugin.path = routerWrapperPath;
|
|
148
|
+
else plugins.push({
|
|
149
|
+
name: 'router',
|
|
150
|
+
path: routerWrapperPath,
|
|
104
151
|
config: {
|
|
105
152
|
serverBase
|
|
106
153
|
}
|
|
@@ -119,7 +166,9 @@ function tanstackRouterPlugin(options = {}) {
|
|
|
119
166
|
source: {
|
|
120
167
|
include: [
|
|
121
168
|
/[\\/]node_modules[\\/]@tanstack[\\/]react-router[\\/]/,
|
|
122
|
-
|
|
169
|
+
/[\\/]node_modules[\\/]@tanstack[\\/]router-core[\\/]/,
|
|
170
|
+
/[\\/]node_modules[\\/]@tanstack[\\/]react-store[\\/]/,
|
|
171
|
+
node_path.resolve(__dirname, '..', '..')
|
|
123
172
|
]
|
|
124
173
|
}
|
|
125
174
|
}));
|
|
@@ -136,15 +185,13 @@ function tanstackRouterPlugin(options = {}) {
|
|
|
136
185
|
if (0 === tanstackEntrypoints.length) return;
|
|
137
186
|
const { handleGeneratorEntryCode } = getRuntimeRouterCli();
|
|
138
187
|
const routesByEntry = await handleGeneratorEntryCode(api, tanstackEntrypoints, {
|
|
139
|
-
entrypointsKey: ENTRYPOINTS_KEY
|
|
140
|
-
generateCodeOptions: {
|
|
141
|
-
enableTanstackTypes: false
|
|
142
|
-
}
|
|
188
|
+
entrypointsKey: ENTRYPOINTS_KEY
|
|
143
189
|
});
|
|
144
190
|
await writeTanstackRouterTypesForEntries({
|
|
145
191
|
appContext: api.getAppContext(),
|
|
146
192
|
generatedDirName,
|
|
147
|
-
routesByEntry
|
|
193
|
+
routesByEntry,
|
|
194
|
+
i18nPluginInstalled: isI18nPluginInstalled()
|
|
148
195
|
});
|
|
149
196
|
});
|
|
150
197
|
api.onFileChanged(async (event)=>{
|
|
@@ -158,15 +205,13 @@ function tanstackRouterPlugin(options = {}) {
|
|
|
158
205
|
regenerate: async ({ api, entrypoints })=>{
|
|
159
206
|
const { handleGeneratorEntryCode } = getRuntimeRouterCli();
|
|
160
207
|
const routesByEntry = await handleGeneratorEntryCode(api, entrypoints, {
|
|
161
|
-
entrypointsKey: ENTRYPOINTS_KEY
|
|
162
|
-
generateCodeOptions: {
|
|
163
|
-
enableTanstackTypes: false
|
|
164
|
-
}
|
|
208
|
+
entrypointsKey: ENTRYPOINTS_KEY
|
|
165
209
|
});
|
|
166
210
|
await writeTanstackRouterTypesForEntries({
|
|
167
211
|
appContext: api.getAppContext(),
|
|
168
212
|
generatedDirName,
|
|
169
|
-
routesByEntry
|
|
213
|
+
routesByEntry,
|
|
214
|
+
i18nPluginInstalled: isI18nPluginInstalled()
|
|
170
215
|
});
|
|
171
216
|
}
|
|
172
217
|
});
|
|
@@ -198,4 +243,4 @@ function tanstackRouterPlugin(options = {}) {
|
|
|
198
243
|
}
|
|
199
244
|
const src_cli = tanstackRouterPlugin;
|
|
200
245
|
export default src_cli;
|
|
201
|
-
export { createTanstackRsbuildRouteSplittingProfile, generateTanstackRouterTypesSourceForEntry,
|
|
246
|
+
export { collectCanonicalRoutesForEntry, createTanstackRsbuildRouteSplittingProfile, generateTanstackRouterTypesSourceForEntry, resolveTanstackRouteCodeSplittingEnabled, tanstackRouterPlugin, writeTanstackRegisterFile, writeTanstackRouterTypesForEntries };
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
const TANSTACK_START_ROUTE_FACTORY_CALLS = [
|
|
2
|
-
'createFileRoute',
|
|
3
|
-
'createRootRoute',
|
|
4
|
-
'createRootRouteWithContext'
|
|
5
|
-
];
|
|
6
|
-
const TANSTACK_START_ROUTE_FACTORY_REGEX = /\b(createFileRoute|createRootRoute|createRootRouteWithContext)\s*(?:<|\()/;
|
|
7
|
-
function isTanstackStartRouteModuleSource(source) {
|
|
8
|
-
return TANSTACK_START_ROUTE_FACTORY_REGEX.test(source);
|
|
9
|
-
}
|
|
10
1
|
function resolveTanstackRouteCodeSplittingEnabled(option) {
|
|
11
2
|
if ('boolean' == typeof option) return option;
|
|
12
3
|
return option?.enabled ?? true;
|
|
@@ -17,27 +8,7 @@ function createTanstackRsbuildRouteSplittingProfile(opts) {
|
|
|
17
8
|
output: {
|
|
18
9
|
splitRouteChunks: resolveTanstackRouteCodeSplittingEnabled(opts.routeCodeSplitting)
|
|
19
10
|
}
|
|
20
|
-
},
|
|
21
|
-
modernRouteChunks: {
|
|
22
|
-
enabled: resolveTanstackRouteCodeSplittingEnabled(opts.routeCodeSplitting),
|
|
23
|
-
owner: 'modern'
|
|
24
|
-
},
|
|
25
|
-
builderChunkSplit: {
|
|
26
|
-
owner: 'modern-rsbuild',
|
|
27
|
-
preserved: true
|
|
28
|
-
},
|
|
29
|
-
tanstackStartRspackSplitter: {
|
|
30
|
-
compatible: false,
|
|
31
|
-
reason: 'TanStack Start Rsbuild route splitting is tied to TanStack file-route factory modules; Modern generates TanStack route trees from Modern route metadata and owns route chunking through output.splitRouteChunks.',
|
|
32
|
-
clientDeleteNodes: [
|
|
33
|
-
'ssr',
|
|
34
|
-
'server',
|
|
35
|
-
'headers'
|
|
36
|
-
],
|
|
37
|
-
routeFactoryCalls: [
|
|
38
|
-
...TANSTACK_START_ROUTE_FACTORY_CALLS
|
|
39
|
-
]
|
|
40
11
|
}
|
|
41
12
|
};
|
|
42
13
|
}
|
|
43
|
-
export { createTanstackRsbuildRouteSplittingProfile,
|
|
14
|
+
export { createTanstackRsbuildRouteSplittingProfile, resolveTanstackRouteCodeSplittingEnabled };
|