@bleedingdev/modern-js-runtime 3.2.0-ultramodern.120 → 3.2.0-ultramodern.121
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/boundary-debugger/index.js +4 -0
- package/dist/cjs/cli/index.js +11 -0
- package/dist/cjs/{router/runtime/tanstack/rsc/ClientSlot.js → core/context/extensions.js} +33 -21
- package/dist/cjs/{router/runtime/tanstack/rsc/SlotContext.js → core/context/helmetContext.js} +16 -20
- package/dist/cjs/core/context/index.js +65 -0
- package/dist/cjs/core/react/wrapper.js +6 -4
- package/dist/cjs/core/server/helmet.js +2 -1
- package/dist/cjs/core/server/requestHandler.js +42 -29
- package/dist/cjs/core/server/routerCleanup.js +110 -0
- package/dist/cjs/core/server/scriptOrder.js +75 -4
- package/dist/cjs/core/server/stream/afterTemplate.js +6 -18
- package/dist/cjs/core/server/stream/deferredScript.js +4 -1
- package/dist/cjs/core/server/string/index.js +1 -7
- package/dist/cjs/core/server/string/loadable.js +13 -40
- package/dist/cjs/core/server/string/ssrData.js +1 -1
- package/dist/cjs/core/server/utils.js +31 -8
- package/dist/cjs/exports/head.js +135 -74
- package/dist/cjs/exports/tanstack-router.js +36 -305
- package/dist/cjs/module-federation/index.js +178 -0
- package/dist/cjs/router/cli/code/index.js +1 -47
- package/dist/cjs/router/cli/code/templates.js +1 -14
- package/dist/cjs/router/cli/handler.js +1 -1
- package/dist/cjs/router/cli/index.js +2 -23
- package/dist/cjs/router/runtime/DeferredDataScripts.node.js +16 -4
- package/dist/cjs/router/runtime/PrefetchLink.js +2 -3
- package/dist/cjs/router/runtime/internal.js +20 -13
- package/dist/cjs/router/runtime/lifecycle.js +37 -22
- package/dist/cjs/router/runtime/plugin.js +2 -9
- package/dist/cjs/router/runtime/plugin.node.js +2 -7
- package/dist/cjs/router/runtime/provider.js +107 -0
- package/dist/cjs/router/runtime/utils.js +35 -9
- package/dist/esm/boundary-debugger/index.mjs +4 -0
- package/dist/esm/cli/index.mjs +4 -2
- package/dist/esm/core/context/extensions.mjs +28 -0
- package/dist/esm/core/context/helmetContext.mjs +13 -0
- package/dist/esm/core/context/index.mjs +5 -0
- package/dist/esm/core/react/wrapper.mjs +6 -4
- package/dist/esm/core/server/helmet.mjs +2 -1
- package/dist/esm/core/server/requestHandler.mjs +43 -30
- package/dist/esm/core/server/routerCleanup.mjs +66 -0
- package/dist/esm/core/server/scriptOrder.mjs +60 -1
- package/dist/esm/core/server/stream/afterTemplate.mjs +8 -20
- package/dist/esm/core/server/stream/deferredScript.mjs +4 -1
- package/dist/esm/core/server/string/index.mjs +3 -9
- package/dist/esm/core/server/string/loadable.mjs +11 -38
- package/dist/esm/core/server/string/ssrData.mjs +2 -2
- package/dist/esm/core/server/utils.mjs +31 -8
- package/dist/esm/exports/head.mjs +135 -74
- package/dist/esm/exports/tanstack-router.mjs +30 -4
- package/dist/esm/module-federation/index.mjs +109 -0
- package/dist/esm/router/cli/code/index.mjs +1 -47
- package/dist/esm/router/cli/code/templates.mjs +1 -14
- package/dist/esm/router/cli/handler.mjs +1 -1
- package/dist/esm/router/cli/index.mjs +3 -24
- package/dist/esm/router/runtime/DeferredDataScripts.node.mjs +16 -4
- package/dist/esm/router/runtime/PrefetchLink.mjs +2 -3
- package/dist/esm/router/runtime/internal.mjs +16 -15
- package/dist/esm/router/runtime/lifecycle.mjs +22 -13
- package/dist/esm/router/runtime/plugin.mjs +4 -11
- package/dist/esm/router/runtime/plugin.node.mjs +4 -9
- package/dist/esm/router/runtime/provider.mjs +57 -0
- package/dist/esm/router/runtime/utils.mjs +35 -9
- package/dist/esm-node/boundary-debugger/index.mjs +4 -0
- package/dist/esm-node/cli/index.mjs +4 -2
- package/dist/esm-node/core/context/extensions.mjs +29 -0
- package/dist/esm-node/core/context/helmetContext.mjs +14 -0
- package/dist/esm-node/core/context/index.mjs +5 -0
- package/dist/esm-node/core/react/wrapper.mjs +6 -4
- package/dist/esm-node/core/server/helmet.mjs +2 -1
- package/dist/esm-node/core/server/requestHandler.mjs +43 -30
- package/dist/esm-node/core/server/routerCleanup.mjs +67 -0
- package/dist/esm-node/core/server/scriptOrder.mjs +60 -1
- package/dist/esm-node/core/server/stream/afterTemplate.mjs +8 -20
- package/dist/esm-node/core/server/stream/deferredScript.mjs +4 -1
- package/dist/esm-node/core/server/string/index.mjs +3 -9
- package/dist/esm-node/core/server/string/loadable.mjs +11 -38
- package/dist/esm-node/core/server/string/ssrData.mjs +2 -2
- package/dist/esm-node/core/server/utils.mjs +31 -8
- package/dist/esm-node/exports/head.mjs +135 -74
- package/dist/esm-node/exports/tanstack-router.mjs +30 -4
- package/dist/esm-node/module-federation/index.mjs +110 -0
- package/dist/esm-node/router/cli/code/index.mjs +1 -47
- package/dist/esm-node/router/cli/code/templates.mjs +1 -14
- package/dist/esm-node/router/cli/handler.mjs +1 -1
- package/dist/esm-node/router/cli/index.mjs +3 -24
- package/dist/esm-node/router/runtime/DeferredDataScripts.node.mjs +16 -4
- package/dist/esm-node/router/runtime/PrefetchLink.mjs +2 -3
- package/dist/esm-node/router/runtime/internal.mjs +16 -15
- package/dist/esm-node/router/runtime/lifecycle.mjs +22 -13
- package/dist/esm-node/router/runtime/plugin.mjs +4 -11
- package/dist/esm-node/router/runtime/plugin.node.mjs +4 -9
- package/dist/esm-node/router/runtime/provider.mjs +58 -0
- package/dist/esm-node/router/runtime/utils.mjs +35 -9
- package/dist/types/cli/index.d.ts +3 -1
- package/dist/types/core/context/extensions.d.ts +37 -0
- package/dist/types/core/context/helmetContext.d.ts +10 -0
- package/dist/types/core/context/index.d.ts +6 -0
- package/dist/types/core/context/runtime.d.ts +1 -11
- package/dist/types/core/server/routerCleanup.d.ts +28 -0
- package/dist/types/core/server/scriptOrder.d.ts +24 -0
- package/dist/types/core/server/string/loadable.d.ts +1 -7
- package/dist/types/core/server/utils.d.ts +1 -0
- package/dist/types/exports/tanstack-router.d.ts +88 -7
- package/dist/types/module-federation/index.d.ts +65 -0
- package/dist/types/router/cli/code/index.d.ts +1 -3
- package/dist/types/router/cli/handler.d.ts +0 -3
- package/dist/types/router/runtime/internal.d.ts +1 -0
- package/dist/types/router/runtime/lifecycle.d.ts +2 -0
- package/dist/types/router/runtime/plugin.d.ts +1 -1
- package/dist/types/router/runtime/plugin.node.d.ts +1 -1
- package/dist/types/router/runtime/provider.d.ts +61 -0
- package/package.json +15 -11
- package/rstest.config.mts +2 -4
- package/dist/cjs/router/cli/code/tanstackTypes.js +0 -447
- package/dist/cjs/router/runtime/tanstack/basepathRewrite.js +0 -66
- package/dist/cjs/router/runtime/tanstack/dataMutation.js +0 -349
- package/dist/cjs/router/runtime/tanstack/hydrationBoundary.js +0 -48
- package/dist/cjs/router/runtime/tanstack/outlet.js +0 -58
- package/dist/cjs/router/runtime/tanstack/plugin.js +0 -342
- package/dist/cjs/router/runtime/tanstack/plugin.node.js +0 -272
- package/dist/cjs/router/runtime/tanstack/prefetchLink.js +0 -59
- package/dist/cjs/router/runtime/tanstack/routeTree.js +0 -525
- package/dist/cjs/router/runtime/tanstack/rsc/CompositeComponent.js +0 -79
- package/dist/cjs/router/runtime/tanstack/rsc/ReplayableStream.js +0 -146
- package/dist/cjs/router/runtime/tanstack/rsc/RscNodeRenderer.js +0 -69
- package/dist/cjs/router/runtime/tanstack/rsc/client.js +0 -97
- package/dist/cjs/router/runtime/tanstack/rsc/createRscProxy.js +0 -145
- package/dist/cjs/router/runtime/tanstack/rsc/index.js +0 -46
- package/dist/cjs/router/runtime/tanstack/rsc/server.js +0 -250
- package/dist/cjs/router/runtime/tanstack/rsc/slotUsageSanitizer.js +0 -69
- package/dist/cjs/router/runtime/tanstack/rsc/symbols.js +0 -77
- package/dist/cjs/ssr/index.node.js +0 -125
- package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -88
- package/dist/cjs/ssr/serverRender/renderToString/entry.js +0 -200
- package/dist/cjs/ssr/serverRender/types.js +0 -40
- package/dist/esm/router/cli/code/tanstackTypes.mjs +0 -396
- package/dist/esm/router/runtime/tanstack/basepathRewrite.mjs +0 -28
- package/dist/esm/router/runtime/tanstack/dataMutation.mjs +0 -305
- package/dist/esm/router/runtime/tanstack/hydrationBoundary.mjs +0 -10
- package/dist/esm/router/runtime/tanstack/outlet.mjs +0 -17
- package/dist/esm/router/runtime/tanstack/plugin.mjs +0 -304
- package/dist/esm/router/runtime/tanstack/plugin.node.mjs +0 -234
- package/dist/esm/router/runtime/tanstack/prefetchLink.mjs +0 -18
- package/dist/esm/router/runtime/tanstack/routeTree.mjs +0 -481
- package/dist/esm/router/runtime/tanstack/rsc/ClientSlot.mjs +0 -19
- package/dist/esm/router/runtime/tanstack/rsc/CompositeComponent.mjs +0 -41
- package/dist/esm/router/runtime/tanstack/rsc/ReplayableStream.mjs +0 -104
- package/dist/esm/router/runtime/tanstack/rsc/RscNodeRenderer.mjs +0 -31
- package/dist/esm/router/runtime/tanstack/rsc/SlotContext.mjs +0 -17
- package/dist/esm/router/runtime/tanstack/rsc/client.mjs +0 -53
- package/dist/esm/router/runtime/tanstack/rsc/createRscProxy.mjs +0 -107
- package/dist/esm/router/runtime/tanstack/rsc/index.mjs +0 -1
- package/dist/esm/router/runtime/tanstack/rsc/server.mjs +0 -200
- package/dist/esm/router/runtime/tanstack/rsc/slotUsageSanitizer.mjs +0 -31
- package/dist/esm/router/runtime/tanstack/rsc/symbols.mjs +0 -17
- package/dist/esm/ssr/index.node.mjs +0 -44
- package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.mjs +0 -50
- package/dist/esm/ssr/serverRender/renderToString/entry.mjs +0 -151
- package/dist/esm/ssr/serverRender/types.mjs +0 -1
- package/dist/esm-node/router/cli/code/tanstackTypes.mjs +0 -397
- package/dist/esm-node/router/runtime/tanstack/basepathRewrite.mjs +0 -29
- package/dist/esm-node/router/runtime/tanstack/dataMutation.mjs +0 -306
- package/dist/esm-node/router/runtime/tanstack/hydrationBoundary.mjs +0 -11
- package/dist/esm-node/router/runtime/tanstack/outlet.mjs +0 -18
- package/dist/esm-node/router/runtime/tanstack/plugin.mjs +0 -305
- package/dist/esm-node/router/runtime/tanstack/plugin.node.mjs +0 -235
- package/dist/esm-node/router/runtime/tanstack/prefetchLink.mjs +0 -19
- package/dist/esm-node/router/runtime/tanstack/routeTree.mjs +0 -482
- package/dist/esm-node/router/runtime/tanstack/rsc/ClientSlot.mjs +0 -20
- package/dist/esm-node/router/runtime/tanstack/rsc/CompositeComponent.mjs +0 -42
- package/dist/esm-node/router/runtime/tanstack/rsc/ReplayableStream.mjs +0 -105
- package/dist/esm-node/router/runtime/tanstack/rsc/RscNodeRenderer.mjs +0 -32
- package/dist/esm-node/router/runtime/tanstack/rsc/SlotContext.mjs +0 -18
- package/dist/esm-node/router/runtime/tanstack/rsc/client.mjs +0 -54
- package/dist/esm-node/router/runtime/tanstack/rsc/createRscProxy.mjs +0 -108
- package/dist/esm-node/router/runtime/tanstack/rsc/index.mjs +0 -2
- package/dist/esm-node/router/runtime/tanstack/rsc/server.mjs +0 -201
- package/dist/esm-node/router/runtime/tanstack/rsc/slotUsageSanitizer.mjs +0 -32
- package/dist/esm-node/router/runtime/tanstack/rsc/symbols.mjs +0 -18
- package/dist/esm-node/ssr/index.node.mjs +0 -45
- package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.after.mjs +0 -51
- package/dist/esm-node/ssr/serverRender/renderToString/entry.mjs +0 -152
- package/dist/esm-node/ssr/serverRender/types.mjs +0 -2
- package/dist/types/router/cli/code/tanstackTypes.d.ts +0 -10
- package/dist/types/router/runtime/tanstack/basepathRewrite.d.ts +0 -8
- package/dist/types/router/runtime/tanstack/dataMutation.d.ts +0 -29
- package/dist/types/router/runtime/tanstack/hydrationBoundary.d.ts +0 -2
- package/dist/types/router/runtime/tanstack/outlet.d.ts +0 -2
- package/dist/types/router/runtime/tanstack/plugin.d.ts +0 -6
- package/dist/types/router/runtime/tanstack/plugin.node.d.ts +0 -6
- package/dist/types/router/runtime/tanstack/prefetchLink.d.ts +0 -11
- package/dist/types/router/runtime/tanstack/routeTree.d.ts +0 -8
- package/dist/types/router/runtime/tanstack/rsc/ClientSlot.d.ts +0 -5
- package/dist/types/router/runtime/tanstack/rsc/CompositeComponent.d.ts +0 -3
- package/dist/types/router/runtime/tanstack/rsc/ReplayableStream.d.ts +0 -24
- package/dist/types/router/runtime/tanstack/rsc/RscNodeRenderer.d.ts +0 -5
- package/dist/types/router/runtime/tanstack/rsc/SlotContext.d.ts +0 -11
- package/dist/types/router/runtime/tanstack/rsc/client.d.ts +0 -11
- package/dist/types/router/runtime/tanstack/rsc/createRscProxy.d.ts +0 -7
- package/dist/types/router/runtime/tanstack/rsc/index.d.ts +0 -2
- package/dist/types/router/runtime/tanstack/rsc/server.d.ts +0 -14
- package/dist/types/router/runtime/tanstack/rsc/slotUsageSanitizer.d.ts +0 -2
- package/dist/types/router/runtime/tanstack/rsc/symbols.d.ts +0 -46
|
@@ -53,26 +53,6 @@ const utils_namespaceObject = require("@modern-js/utils");
|
|
|
53
53
|
const external_constants_js_namespaceObject = require("./constants.js");
|
|
54
54
|
const external_entry_js_namespaceObject = require("./entry.js");
|
|
55
55
|
const external_handler_js_namespaceObject = require("./handler.js");
|
|
56
|
-
const JS_OR_TS_EXTS = [
|
|
57
|
-
'.js',
|
|
58
|
-
'.jsx',
|
|
59
|
-
'.ts',
|
|
60
|
-
'.tsx',
|
|
61
|
-
'.mjs',
|
|
62
|
-
'.mts',
|
|
63
|
-
'.cjs',
|
|
64
|
-
'.cts'
|
|
65
|
-
];
|
|
66
|
-
function hasRouterConfigInRuntimeFile(runtimeConfigBase) {
|
|
67
|
-
const runtimeConfigFile = (0, utils_namespaceObject.findExists)(JS_OR_TS_EXTS.map((ext)=>`${runtimeConfigBase}${ext}`));
|
|
68
|
-
if (!runtimeConfigFile) return false;
|
|
69
|
-
try {
|
|
70
|
-
const content = utils_namespaceObject.fs.readFileSync(runtimeConfigFile, 'utf-8');
|
|
71
|
-
return /router\s*:/.test(content);
|
|
72
|
-
} catch {
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
56
|
function isBuiltInRouteEntrypoint(entrypoint) {
|
|
77
57
|
const entrypointRoutesOwner = (0, external_entry_js_namespaceObject.getEntrypointRoutesOwner)(entrypoint);
|
|
78
58
|
if (entrypointRoutesOwner) return entrypointRoutesOwner === external_entry_js_namespaceObject.BUILT_IN_ROUTES_OWNER;
|
|
@@ -102,12 +82,11 @@ const routerPlugin = ()=>({
|
|
|
102
82
|
});
|
|
103
83
|
});
|
|
104
84
|
api._internalRuntimePlugins(({ entrypoint, plugins })=>{
|
|
105
|
-
const { serverRoutes, metaName
|
|
85
|
+
const { serverRoutes, metaName } = api.getAppContext();
|
|
106
86
|
const normalizedConfig = api.getNormalizedConfig();
|
|
107
87
|
const hasUserRouterConfig = normalizedConfig.router && Object.keys(normalizedConfig.router).length > 0;
|
|
108
|
-
const hasRuntimeRouterConfig = hasRouterConfigInRuntimeFile(external_node_path_default().join(srcDirectory, runtimeConfigFile));
|
|
109
88
|
const serverBase = serverRoutes.filter((route)=>route.entryName === entrypoint.entryName).map((route)=>route.urlPath).sort((a, b)=>a.length - b.length > 0 ? -1 : 1);
|
|
110
|
-
const shouldInstallBuiltInRouter = isBuiltInRouteEntrypoint(entrypoint) || !isPluginOwnedRouteEntrypoint(entrypoint) &&
|
|
89
|
+
const shouldInstallBuiltInRouter = isBuiltInRouteEntrypoint(entrypoint) || !isPluginOwnedRouteEntrypoint(entrypoint) && hasUserRouterConfig;
|
|
111
90
|
if (shouldInstallBuiltInRouter) plugins.push({
|
|
112
91
|
name: 'router',
|
|
113
92
|
path: `@${metaName}/runtime/router/internal`,
|
|
@@ -36,6 +36,21 @@ const external_react_namespaceObject = require("react");
|
|
|
36
36
|
const constants_js_namespaceObject = require("../../core/constants.js");
|
|
37
37
|
const external_constants_js_namespaceObject = require("./constants.js");
|
|
38
38
|
const external_utils_js_namespaceObject = require("./utils.js");
|
|
39
|
+
function toDeferredErrorInfo(error) {
|
|
40
|
+
if ('production' === process.env.NODE_ENV) return {
|
|
41
|
+
message: 'Unexpected Server Error'
|
|
42
|
+
};
|
|
43
|
+
if (error && 'object' == typeof error) {
|
|
44
|
+
const maybeMessage = error.message;
|
|
45
|
+
return {
|
|
46
|
+
message: 'string' == typeof maybeMessage ? maybeMessage : String(maybeMessage ?? error),
|
|
47
|
+
stack: error.stack
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
message: String(error)
|
|
52
|
+
};
|
|
53
|
+
}
|
|
39
54
|
const DeferredDataScripts = (props)=>{
|
|
40
55
|
const staticContext = props?.context;
|
|
41
56
|
const useJsonScript = props?.useJsonScript;
|
|
@@ -71,10 +86,7 @@ const DeferredDataScripts = (props)=>{
|
|
|
71
86
|
{
|
|
72
87
|
const trackedPromise = deferredData.data[key];
|
|
73
88
|
if (void 0 !== trackedPromise._error) {
|
|
74
|
-
const error =
|
|
75
|
-
message: trackedPromise._error.message,
|
|
76
|
-
stack: 'production' !== process.env.NODE_ENV ? trackedPromise._error.stack : void 0
|
|
77
|
-
};
|
|
89
|
+
const error = toDeferredErrorInfo(trackedPromise._error);
|
|
78
90
|
return {
|
|
79
91
|
key,
|
|
80
92
|
routerDataFnName: 'p',
|
|
@@ -54,7 +54,6 @@ function composeEventHandlers(theirHandler, ourHandler) {
|
|
|
54
54
|
}
|
|
55
55
|
const ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;
|
|
56
56
|
const DEFAULT_PREFETCH_BEHAVIOR = 'render';
|
|
57
|
-
const DEFAULT_PRELOAD_BEHAVIOR = 'viewport';
|
|
58
57
|
const INTENT_DELAY = 100;
|
|
59
58
|
const VIEWPORT_ROOT_MARGIN = '200px';
|
|
60
59
|
const MAX_CONCURRENT_WARMUPS = 4;
|
|
@@ -119,7 +118,7 @@ const setRef = (ref, value)=>{
|
|
|
119
118
|
};
|
|
120
119
|
const isDataWarmupEnabled = (route)=>{
|
|
121
120
|
const handle = route.handle;
|
|
122
|
-
return handle?.navigationWarmup?.data
|
|
121
|
+
return handle?.navigationWarmup?.data !== false;
|
|
123
122
|
};
|
|
124
123
|
function usePrefetchBehavior(prefetch, preload, theirElementProps) {
|
|
125
124
|
const [maybeWarmup, setMaybeWarmup] = external_react_default().useState(false);
|
|
@@ -293,7 +292,7 @@ const normalizePreloadBehavior = (preload, prefetch)=>{
|
|
|
293
292
|
if (false === preload || 'none' === preload) return 'none';
|
|
294
293
|
if (void 0 !== preload) return preload;
|
|
295
294
|
if ('none' === prefetch) return 'none';
|
|
296
|
-
return
|
|
295
|
+
return prefetch;
|
|
297
296
|
};
|
|
298
297
|
const createPrefetchLink = (Link)=>/*#__PURE__*/ external_react_default().forwardRef(({ to, prefetch = DEFAULT_PREFETCH_BEHAVIOR, preload, ...props }, forwardedRef)=>{
|
|
299
298
|
const isAbsolute = 'string' == typeof to && ABSOLUTE_URL_REGEX.test(to);
|
|
@@ -30,40 +30,47 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
31
|
default: ()=>internal,
|
|
32
32
|
modifyRoutes: ()=>external_plugin_js_namespaceObject.modifyRoutes,
|
|
33
|
+
registerRouterProvider: ()=>external_provider_js_namespaceObject.registerRouterProvider,
|
|
33
34
|
renderRoutes: ()=>external_utils_js_namespaceObject.renderRoutes,
|
|
35
|
+
resolveRouterProvider: ()=>external_provider_js_namespaceObject.resolveRouterProvider,
|
|
34
36
|
routerPlugin: ()=>routerPlugin
|
|
35
37
|
});
|
|
36
38
|
const merge_namespaceObject = require("@modern-js/runtime-utils/merge");
|
|
37
|
-
const external_hooks_js_namespaceObject = require("./hooks.js");
|
|
38
39
|
const external_plugin_js_namespaceObject = require("./plugin.js");
|
|
39
|
-
const
|
|
40
|
+
const external_provider_js_namespaceObject = require("./provider.js");
|
|
40
41
|
const external_utils_js_namespaceObject = require("./utils.js");
|
|
42
|
+
(0, external_provider_js_namespaceObject.registerRouterProvider)('react-router', external_plugin_js_namespaceObject.routerPlugin, {
|
|
43
|
+
isDefault: true
|
|
44
|
+
});
|
|
41
45
|
const routerPlugin = (userConfig = {})=>({
|
|
42
46
|
name: '@modern-js/plugin-router',
|
|
43
|
-
registryHooks:
|
|
44
|
-
onAfterCreateRouter: external_hooks_js_namespaceObject.onAfterCreateRouter,
|
|
45
|
-
onAfterHydrateRouter: external_hooks_js_namespaceObject.onAfterHydrateRouter,
|
|
46
|
-
onBeforeCreateRouter: external_hooks_js_namespaceObject.onBeforeCreateRouter,
|
|
47
|
-
modifyRoutes: external_hooks_js_namespaceObject.modifyRoutes,
|
|
48
|
-
onBeforeCreateRoutes: external_hooks_js_namespaceObject.onBeforeCreateRoutes,
|
|
49
|
-
onBeforeHydrateRouter: external_hooks_js_namespaceObject.onBeforeHydrateRouter
|
|
50
|
-
},
|
|
47
|
+
registryHooks: external_provider_js_namespaceObject.routerProviderRegistryHooks,
|
|
51
48
|
setup: (api)=>{
|
|
52
49
|
const mergedConfig = (0, merge_namespaceObject.merge)(api.getRuntimeConfig().router || {}, userConfig);
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
const pluginFactory = (0, external_provider_js_namespaceObject.resolveRouterProvider)(mergedConfig.framework, {
|
|
51
|
+
localDefault: {
|
|
52
|
+
name: 'react-router',
|
|
53
|
+
factory: external_plugin_js_namespaceObject.routerPlugin
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
const providerPlugin = pluginFactory(userConfig);
|
|
57
|
+
(0, external_provider_js_namespaceObject.reportUnsupportedProviderRegistryHooks)(providerPlugin);
|
|
58
|
+
providerPlugin.setup?.(api);
|
|
56
59
|
}
|
|
57
60
|
});
|
|
58
61
|
const internal = routerPlugin;
|
|
59
62
|
exports["default"] = __webpack_exports__["default"];
|
|
60
63
|
exports.modifyRoutes = __webpack_exports__.modifyRoutes;
|
|
64
|
+
exports.registerRouterProvider = __webpack_exports__.registerRouterProvider;
|
|
61
65
|
exports.renderRoutes = __webpack_exports__.renderRoutes;
|
|
66
|
+
exports.resolveRouterProvider = __webpack_exports__.resolveRouterProvider;
|
|
62
67
|
exports.routerPlugin = __webpack_exports__.routerPlugin;
|
|
63
68
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
64
69
|
"default",
|
|
65
70
|
"modifyRoutes",
|
|
71
|
+
"registerRouterProvider",
|
|
66
72
|
"renderRoutes",
|
|
73
|
+
"resolveRouterProvider",
|
|
67
74
|
"routerPlugin"
|
|
68
75
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
69
76
|
Object.defineProperty(exports, '__esModule', {
|
|
@@ -27,6 +27,26 @@ var __webpack_require__ = {};
|
|
|
27
27
|
})();
|
|
28
28
|
var __webpack_exports__ = {};
|
|
29
29
|
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
+
applyRouterRuntimeState: ()=>applyRouterRuntimeState,
|
|
32
|
+
applyRouterServerPrepareResult: ()=>applyRouterServerPrepareResult,
|
|
33
|
+
cleanupRouterRuntimeState: ()=>cleanupRouterRuntimeState,
|
|
34
|
+
createRouterRuntimeState: ()=>createRouterRuntimeState,
|
|
35
|
+
createRouterServerSnapshot: ()=>createRouterServerSnapshot,
|
|
36
|
+
getRouterHydrationScripts: ()=>getRouterHydrationScripts,
|
|
37
|
+
getRouterMatchedRouteIds: ()=>getRouterMatchedRouteIds,
|
|
38
|
+
getRouterRuntimeState: ()=>getRouterRuntimeState,
|
|
39
|
+
getRouterServerSnapshot: ()=>getRouterServerSnapshot
|
|
40
|
+
});
|
|
41
|
+
const extensions_js_namespaceObject = require("../../core/context/extensions.js");
|
|
42
|
+
const routerRuntimeStateExtension = (0, extensions_js_namespaceObject.createRuntimeContextExtension)('@modern-js/runtime:router-runtime-state');
|
|
43
|
+
const routerServerSnapshotExtension = (0, extensions_js_namespaceObject.createRuntimeContextExtension)('@modern-js/runtime:router-server-snapshot');
|
|
44
|
+
function getRouterRuntimeState(runtimeContext) {
|
|
45
|
+
return routerRuntimeStateExtension.get(runtimeContext);
|
|
46
|
+
}
|
|
47
|
+
function getRouterServerSnapshot(runtimeContext) {
|
|
48
|
+
return routerServerSnapshotExtension.get(runtimeContext);
|
|
49
|
+
}
|
|
30
50
|
function toHydrationScripts(state) {
|
|
31
51
|
if (state.hydrationScripts?.length) return state.hydrationScripts;
|
|
32
52
|
return state.hydrationScript ? [
|
|
@@ -90,12 +110,8 @@ function createRouterRuntimeState(state) {
|
|
|
90
110
|
}
|
|
91
111
|
function applyRouterRuntimeState(runtimeContext, state) {
|
|
92
112
|
const normalized = createRouterRuntimeState(state);
|
|
93
|
-
runtimeContext
|
|
94
|
-
|
|
95
|
-
runtimeContext.routerHydrationScript = normalized.hydrationScript;
|
|
96
|
-
runtimeContext.routerMatchedRouteIds = normalized.matchedRouteIds;
|
|
97
|
-
runtimeContext.routerRuntime = normalized;
|
|
98
|
-
if (normalized.serverSnapshot) runtimeContext.routerServerSnapshot = normalized.serverSnapshot;
|
|
113
|
+
routerRuntimeStateExtension.set(runtimeContext, normalized);
|
|
114
|
+
if (normalized.serverSnapshot) routerServerSnapshotExtension.set(runtimeContext, normalized.serverSnapshot);
|
|
99
115
|
return runtimeContext;
|
|
100
116
|
}
|
|
101
117
|
function applyRouterServerPrepareResult(runtimeContext, result) {
|
|
@@ -108,29 +124,24 @@ function applyRouterServerPrepareResult(runtimeContext, result) {
|
|
|
108
124
|
return runtimeContext;
|
|
109
125
|
}
|
|
110
126
|
function getRouterHydrationScripts(runtimeContext) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
hydrationScript:
|
|
127
|
+
const serverSnapshot = getRouterServerSnapshot(runtimeContext);
|
|
128
|
+
const runtimeState = getRouterRuntimeState(runtimeContext);
|
|
129
|
+
return serverSnapshot?.hydrationScripts ?? toHydrationScripts({
|
|
130
|
+
hydrationScript: serverSnapshot?.hydrationScript
|
|
131
|
+
}) ?? runtimeState?.hydrationScripts ?? toHydrationScripts({
|
|
132
|
+
hydrationScript: runtimeState?.hydrationScript
|
|
115
133
|
}) ?? [];
|
|
116
134
|
}
|
|
117
135
|
function getRouterMatchedRouteIds(runtimeContext) {
|
|
118
|
-
|
|
136
|
+
const serverSnapshot = getRouterServerSnapshot(runtimeContext);
|
|
137
|
+
const runtimeState = getRouterRuntimeState(runtimeContext);
|
|
138
|
+
return serverSnapshot?.matchedRouteIds ?? getMatchedRouteIdsFromMatches(serverSnapshot?.matches) ?? runtimeState?.matchedRouteIds ?? getMatchedRouteIdsFromMatches(runtimeState?.matches);
|
|
119
139
|
}
|
|
120
140
|
async function cleanupRouterRuntimeState(runtimeContext) {
|
|
121
141
|
try {
|
|
122
|
-
await runtimeContext
|
|
142
|
+
await getRouterRuntimeState(runtimeContext)?.cleanup?.();
|
|
123
143
|
} catch {}
|
|
124
144
|
}
|
|
125
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
126
|
-
applyRouterRuntimeState: ()=>applyRouterRuntimeState,
|
|
127
|
-
applyRouterServerPrepareResult: ()=>applyRouterServerPrepareResult,
|
|
128
|
-
cleanupRouterRuntimeState: ()=>cleanupRouterRuntimeState,
|
|
129
|
-
createRouterRuntimeState: ()=>createRouterRuntimeState,
|
|
130
|
-
createRouterServerSnapshot: ()=>createRouterServerSnapshot,
|
|
131
|
-
getRouterHydrationScripts: ()=>getRouterHydrationScripts,
|
|
132
|
-
getRouterMatchedRouteIds: ()=>getRouterMatchedRouteIds
|
|
133
|
-
});
|
|
134
145
|
exports.applyRouterRuntimeState = __webpack_exports__.applyRouterRuntimeState;
|
|
135
146
|
exports.applyRouterServerPrepareResult = __webpack_exports__.applyRouterServerPrepareResult;
|
|
136
147
|
exports.cleanupRouterRuntimeState = __webpack_exports__.cleanupRouterRuntimeState;
|
|
@@ -138,6 +149,8 @@ exports.createRouterRuntimeState = __webpack_exports__.createRouterRuntimeState;
|
|
|
138
149
|
exports.createRouterServerSnapshot = __webpack_exports__.createRouterServerSnapshot;
|
|
139
150
|
exports.getRouterHydrationScripts = __webpack_exports__.getRouterHydrationScripts;
|
|
140
151
|
exports.getRouterMatchedRouteIds = __webpack_exports__.getRouterMatchedRouteIds;
|
|
152
|
+
exports.getRouterRuntimeState = __webpack_exports__.getRouterRuntimeState;
|
|
153
|
+
exports.getRouterServerSnapshot = __webpack_exports__.getRouterServerSnapshot;
|
|
141
154
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
142
155
|
"applyRouterRuntimeState",
|
|
143
156
|
"applyRouterServerPrepareResult",
|
|
@@ -145,7 +158,9 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
|
145
158
|
"createRouterRuntimeState",
|
|
146
159
|
"createRouterServerSnapshot",
|
|
147
160
|
"getRouterHydrationScripts",
|
|
148
|
-
"getRouterMatchedRouteIds"
|
|
161
|
+
"getRouterMatchedRouteIds",
|
|
162
|
+
"getRouterRuntimeState",
|
|
163
|
+
"getRouterServerSnapshot"
|
|
149
164
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
150
165
|
Object.defineProperty(exports, '__esModule', {
|
|
151
166
|
value: true
|
|
@@ -39,8 +39,8 @@ const router_namespaceObject = require("@modern-js/runtime-utils/router");
|
|
|
39
39
|
const url_namespaceObject = require("@modern-js/runtime-utils/url");
|
|
40
40
|
const external_react_namespaceObject = require("react");
|
|
41
41
|
const index_js_namespaceObject = require("../../core/context/index.js");
|
|
42
|
-
const external_hooks_js_namespaceObject = require("./hooks.js");
|
|
43
42
|
const external_lifecycle_js_namespaceObject = require("./lifecycle.js");
|
|
43
|
+
const external_provider_js_namespaceObject = require("./provider.js");
|
|
44
44
|
const external_rsc_router_js_namespaceObject = require("./rsc-router.js");
|
|
45
45
|
const external_utils_js_namespaceObject = require("./utils.js");
|
|
46
46
|
let finalRouteConfig = {
|
|
@@ -56,14 +56,7 @@ function modifyRoutes(modifyFunction) {
|
|
|
56
56
|
}
|
|
57
57
|
const routerPlugin = (userConfig = {})=>({
|
|
58
58
|
name: '@modern-js/plugin-router',
|
|
59
|
-
registryHooks:
|
|
60
|
-
onAfterCreateRouter: external_hooks_js_namespaceObject.onAfterCreateRouter,
|
|
61
|
-
onAfterHydrateRouter: external_hooks_js_namespaceObject.onAfterHydrateRouter,
|
|
62
|
-
onBeforeCreateRouter: external_hooks_js_namespaceObject.onBeforeCreateRouter,
|
|
63
|
-
modifyRoutes: external_hooks_js_namespaceObject.modifyRoutes,
|
|
64
|
-
onBeforeCreateRoutes: external_hooks_js_namespaceObject.onBeforeCreateRoutes,
|
|
65
|
-
onBeforeHydrateRouter: external_hooks_js_namespaceObject.onBeforeHydrateRouter
|
|
66
|
-
},
|
|
59
|
+
registryHooks: external_provider_js_namespaceObject.routerProviderRegistryHooks,
|
|
67
60
|
setup: (api)=>{
|
|
68
61
|
const routesContainer = {
|
|
69
62
|
current: []
|
|
@@ -51,8 +51,8 @@ const index_js_namespaceObject = require("../../core/context/index.js");
|
|
|
51
51
|
const index_server_js_namespaceObject = require("../../core/context/serverPayload/index.server.js");
|
|
52
52
|
const external_DeferredDataScripts_node_js_namespaceObject = require("./DeferredDataScripts.node.js");
|
|
53
53
|
var external_DeferredDataScripts_node_js_default = /*#__PURE__*/ __webpack_require__.n(external_DeferredDataScripts_node_js_namespaceObject);
|
|
54
|
-
const external_hooks_js_namespaceObject = require("./hooks.js");
|
|
55
54
|
const external_lifecycle_js_namespaceObject = require("./lifecycle.js");
|
|
55
|
+
const external_provider_js_namespaceObject = require("./provider.js");
|
|
56
56
|
const external_rsc_router_js_namespaceObject = require("./rsc-router.js");
|
|
57
57
|
const external_utils_js_namespaceObject = require("./utils.js");
|
|
58
58
|
function createRemixRequest(request) {
|
|
@@ -85,12 +85,7 @@ function createReactRouterServerSnapshot(routerContext, basename) {
|
|
|
85
85
|
}
|
|
86
86
|
const routerPlugin = (userConfig = {})=>({
|
|
87
87
|
name: '@modern-js/plugin-router',
|
|
88
|
-
registryHooks:
|
|
89
|
-
onAfterCreateRouter: external_hooks_js_namespaceObject.onAfterCreateRouter,
|
|
90
|
-
onBeforeCreateRouter: external_hooks_js_namespaceObject.onBeforeCreateRouter,
|
|
91
|
-
modifyRoutes: external_hooks_js_namespaceObject.modifyRoutes,
|
|
92
|
-
onBeforeCreateRoutes: external_hooks_js_namespaceObject.onBeforeCreateRoutes
|
|
93
|
-
},
|
|
88
|
+
registryHooks: external_provider_js_namespaceObject.routerProviderRegistryHooks,
|
|
94
89
|
setup: (api)=>{
|
|
95
90
|
let finalRouteConfig = {};
|
|
96
91
|
api.onBeforeRender(async (context, interrupt)=>{
|
|
@@ -0,0 +1,107 @@
|
|
|
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
|
+
registerRouterProvider: ()=>registerRouterProvider,
|
|
32
|
+
reportUnsupportedProviderRegistryHooks: ()=>reportUnsupportedProviderRegistryHooks,
|
|
33
|
+
resolveRouterProvider: ()=>resolveRouterProvider,
|
|
34
|
+
routerProviderRegistryHooks: ()=>routerProviderRegistryHooks,
|
|
35
|
+
unsafe_resetRouterProvidersForTesting: ()=>unsafe_resetRouterProvidersForTesting
|
|
36
|
+
});
|
|
37
|
+
const external_hooks_js_namespaceObject = require("./hooks.js");
|
|
38
|
+
const routerProviderRegistryHooks = {
|
|
39
|
+
modifyRoutes: external_hooks_js_namespaceObject.modifyRoutes,
|
|
40
|
+
onBeforeCreateRoutes: external_hooks_js_namespaceObject.onBeforeCreateRoutes,
|
|
41
|
+
onBeforeCreateRouter: external_hooks_js_namespaceObject.onBeforeCreateRouter,
|
|
42
|
+
onAfterCreateRouter: external_hooks_js_namespaceObject.onAfterCreateRouter,
|
|
43
|
+
onBeforeHydrateRouter: external_hooks_js_namespaceObject.onBeforeHydrateRouter,
|
|
44
|
+
onAfterHydrateRouter: external_hooks_js_namespaceObject.onAfterHydrateRouter
|
|
45
|
+
};
|
|
46
|
+
function reportUnsupportedProviderRegistryHooks(providerPlugin) {
|
|
47
|
+
const unsupportedHookNames = Object.keys(providerPlugin.registryHooks ?? {}).filter((hookName)=>!(hookName in routerProviderRegistryHooks));
|
|
48
|
+
if (unsupportedHookNames.length > 0) console.warn(`[@modern-js/runtime] The router provider "${providerPlugin.name}" declares registry hooks outside the router hook contract: ${unsupportedHookNames.join(', ')}. These hooks are not registered when the provider is resolved through \`runtime.router.framework\` — declare them on a separate runtime plugin instead.`);
|
|
49
|
+
return unsupportedHookNames;
|
|
50
|
+
}
|
|
51
|
+
const REGISTRY_SLOT = Symbol.for('@modern-js/runtime:router-providers:v2');
|
|
52
|
+
function getRegistry() {
|
|
53
|
+
const host = globalThis;
|
|
54
|
+
host[REGISTRY_SLOT] ??= {
|
|
55
|
+
providers: new Map(),
|
|
56
|
+
warnedDuplicates: new Set()
|
|
57
|
+
};
|
|
58
|
+
host[REGISTRY_SLOT].warnedDuplicates ??= new Set();
|
|
59
|
+
return host[REGISTRY_SLOT];
|
|
60
|
+
}
|
|
61
|
+
function registerRouterProvider(name, factory, options = {}) {
|
|
62
|
+
const registry = getRegistry();
|
|
63
|
+
const existing = registry.providers.get(name);
|
|
64
|
+
if (void 0 !== existing) {
|
|
65
|
+
if (existing !== factory && !registry.warnedDuplicates.has(name)) {
|
|
66
|
+
registry.warnedDuplicates.add(name);
|
|
67
|
+
console.warn(`[@modern-js/runtime] The router provider "${name}" was registered more than once with different module instances; keeping the first registration. This usually means two copies of the providing plugin were bundled — for Module Federation, add the provider runtime (e.g. '@modern-js/plugin-tanstack/runtime') to the shared modules of both the host and the remote to deduplicate it.`);
|
|
68
|
+
}
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (true !== options.isDefault) {
|
|
72
|
+
if (void 0 !== registry.nonDefaultProvider && registry.nonDefaultProvider !== name) throw new Error(`[@modern-js/runtime] Cannot register router provider "${name}": the competing router provider "${registry.nonDefaultProvider}" is already registered. Only one non-default router provider may be installed at a time — remove one of the router plugins.`);
|
|
73
|
+
registry.nonDefaultProvider = name;
|
|
74
|
+
} else registry.defaultProvider = name;
|
|
75
|
+
registry.providers.set(name, factory);
|
|
76
|
+
}
|
|
77
|
+
function resolveRouterProvider(framework, options = {}) {
|
|
78
|
+
const registry = getRegistry();
|
|
79
|
+
const name = framework || registry.defaultProvider || options.localDefault?.name;
|
|
80
|
+
if (void 0 === name) throw new Error('[@modern-js/runtime] No default router provider is registered. This is a bug in the runtime setup.');
|
|
81
|
+
if (void 0 !== options.localDefault && name === options.localDefault.name) return options.localDefault.factory;
|
|
82
|
+
const factory = registry.providers.get(name);
|
|
83
|
+
if (void 0 !== factory) return factory;
|
|
84
|
+
if ('tanstack' === name) throw new Error("[@modern-js/runtime] `runtime.router.framework` is set to \"tanstack\", but no TanStack router provider is registered. Install @modern-js/plugin-tanstack, add `tanstackRouterPlugin()` to the `plugins` array in modern.config.ts, and make sure '@modern-js/plugin-tanstack/runtime' is imported (e.g. in modern.runtime.ts).");
|
|
85
|
+
throw new Error(`[@modern-js/runtime] Unknown router framework "${name}". Registered providers: ${[
|
|
86
|
+
...registry.providers.keys()
|
|
87
|
+
].join(', ') || '(none)'}. Install and register the plugin that provides this router framework.`);
|
|
88
|
+
}
|
|
89
|
+
function unsafe_resetRouterProvidersForTesting() {
|
|
90
|
+
const host = globalThis;
|
|
91
|
+
delete host[REGISTRY_SLOT];
|
|
92
|
+
}
|
|
93
|
+
exports.registerRouterProvider = __webpack_exports__.registerRouterProvider;
|
|
94
|
+
exports.reportUnsupportedProviderRegistryHooks = __webpack_exports__.reportUnsupportedProviderRegistryHooks;
|
|
95
|
+
exports.resolveRouterProvider = __webpack_exports__.resolveRouterProvider;
|
|
96
|
+
exports.routerProviderRegistryHooks = __webpack_exports__.routerProviderRegistryHooks;
|
|
97
|
+
exports.unsafe_resetRouterProvidersForTesting = __webpack_exports__.unsafe_resetRouterProvidersForTesting;
|
|
98
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
99
|
+
"registerRouterProvider",
|
|
100
|
+
"reportUnsupportedProviderRegistryHooks",
|
|
101
|
+
"resolveRouterProvider",
|
|
102
|
+
"routerProviderRegistryHooks",
|
|
103
|
+
"unsafe_resetRouterProvidersForTesting"
|
|
104
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
105
|
+
Object.defineProperty(exports, '__esModule', {
|
|
106
|
+
value: true
|
|
107
|
+
});
|
|
@@ -149,7 +149,10 @@ function getRouteObjects(routes, { globalApp, ssrMode, props }) {
|
|
|
149
149
|
}
|
|
150
150
|
routeObjects.push({
|
|
151
151
|
path: '*',
|
|
152
|
-
element: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_DefaultNotFound_js_namespaceObject.DefaultNotFound, {})
|
|
152
|
+
element: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_DefaultNotFound_js_namespaceObject.DefaultNotFound, {}),
|
|
153
|
+
loader: ()=>new Response('404', {
|
|
154
|
+
status: 404
|
|
155
|
+
})
|
|
153
156
|
});
|
|
154
157
|
return routeObjects;
|
|
155
158
|
}
|
|
@@ -198,17 +201,40 @@ function serializeErrors(errors) {
|
|
|
198
201
|
if (!errors) return null;
|
|
199
202
|
const entries = Object.entries(errors);
|
|
200
203
|
const serialized = {};
|
|
201
|
-
for (const [key, val] of entries)if ((0, router_namespaceObject.isRouteErrorResponse)(val)) serialized[key] =
|
|
202
|
-
|
|
203
|
-
|
|
204
|
+
for (const [key, val] of entries)if ((0, router_namespaceObject.isRouteErrorResponse)(val)) serialized[key] = serializeRouteErrorResponse(val);
|
|
205
|
+
else if (val instanceof Error) serialized[key] = serializeError(val);
|
|
206
|
+
else serialized[key] = val;
|
|
207
|
+
return serialized;
|
|
208
|
+
}
|
|
209
|
+
function shouldRedactServerError() {
|
|
210
|
+
return 'development' !== process.env.NODE_ENV && 'test' !== process.env.NODE_ENV;
|
|
211
|
+
}
|
|
212
|
+
function serializeError(error) {
|
|
213
|
+
if (shouldRedactServerError()) return {
|
|
214
|
+
message: 'Unexpected Server Error',
|
|
215
|
+
stack: void 0,
|
|
216
|
+
__type: 'Error'
|
|
204
217
|
};
|
|
205
|
-
|
|
206
|
-
message:
|
|
207
|
-
stack:
|
|
218
|
+
return {
|
|
219
|
+
message: error.message,
|
|
220
|
+
stack: error.stack,
|
|
208
221
|
__type: 'Error'
|
|
209
222
|
};
|
|
210
|
-
|
|
211
|
-
|
|
223
|
+
}
|
|
224
|
+
function serializeRouteErrorResponse(error) {
|
|
225
|
+
if (!(0, router_namespaceObject.isRouteErrorResponse)(error)) return error;
|
|
226
|
+
if (error.status >= 500 && shouldRedactServerError()) return {
|
|
227
|
+
status: error.status,
|
|
228
|
+
statusText: 'Internal Server Error',
|
|
229
|
+
data: 'Unexpected Server Error',
|
|
230
|
+
__type: 'RouteErrorResponse'
|
|
231
|
+
};
|
|
232
|
+
return {
|
|
233
|
+
status: error.status,
|
|
234
|
+
statusText: error.statusText,
|
|
235
|
+
data: error.data,
|
|
236
|
+
__type: 'RouteErrorResponse'
|
|
237
|
+
};
|
|
212
238
|
}
|
|
213
239
|
function deserializeErrors(errors) {
|
|
214
240
|
if (!errors) return null;
|
|
@@ -196,9 +196,13 @@ function BoundaryDebugger({ controlMode = 'visible', enabledByDefault = false, l
|
|
|
196
196
|
enabled ? /*#__PURE__*/ jsx("div", {
|
|
197
197
|
"aria-hidden": "true",
|
|
198
198
|
children: boxes.map((box)=>/*#__PURE__*/ jsx("div", {
|
|
199
|
+
"data-modern-boundary-overlay": "",
|
|
200
|
+
"data-modern-boundary-overlay-id": box.id,
|
|
201
|
+
"data-modern-boundary-overlay-label": box.label,
|
|
199
202
|
style: {
|
|
200
203
|
border: `2px solid ${box.color}`,
|
|
201
204
|
borderRadius: 8,
|
|
205
|
+
boxSizing: 'border-box',
|
|
202
206
|
boxShadow: `0 0 0 1px rgba(255,255,255,.72), 0 6px 20px color-mix(in srgb, ${box.color} 20%, transparent)`,
|
|
203
207
|
height: box.height,
|
|
204
208
|
left: box.left,
|
package/dist/esm/cli/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { cleanRequireCache, isReact18 as utils_isReact18 } from "@modern-js/utils";
|
|
2
2
|
import path_0 from "path";
|
|
3
3
|
import { documentPlugin } from "../document/cli/index.mjs";
|
|
4
|
-
import { getEntrypointRoutesDir, handleFileChange, handleGeneratorEntryCode, handleModifyEntrypoints, isRouteEntry, routerPlugin } from "../router/cli/index.mjs";
|
|
4
|
+
import { getEntrypointRoutesDir, getEntrypointRoutesOwner, handleFileChange, handleGeneratorEntryCode, handleModifyEntrypoints, isRouteEntry, routerPlugin } from "../router/cli/index.mjs";
|
|
5
5
|
import { builderPluginAlias } from "./alias.mjs";
|
|
6
6
|
import { generateCode } from "./code.mjs";
|
|
7
7
|
import { ENTRY_BOOTSTRAP_FILE_NAME, ENTRY_POINT_FILE_NAME } from "./constants.mjs";
|
|
@@ -89,5 +89,7 @@ const runtimePlugin = (params)=>({
|
|
|
89
89
|
}
|
|
90
90
|
});
|
|
91
91
|
const cli = runtimePlugin;
|
|
92
|
+
export { makeLegalIdentifier } from "../router/cli/code/makeLegalIdentifier.mjs";
|
|
93
|
+
export { getPathWithoutExt } from "../router/cli/code/utils.mjs";
|
|
92
94
|
export default cli;
|
|
93
|
-
export { documentPlugin, getEntrypointRoutesDir, handleFileChange, handleGeneratorEntryCode, handleModifyEntrypoints, isRouteEntry, isRuntimeEntry, routerPlugin, runtimePlugin, ssrPlugin };
|
|
95
|
+
export { documentPlugin, getEntrypointRoutesDir, getEntrypointRoutesOwner, handleFileChange, handleGeneratorEntryCode, handleModifyEntrypoints, isRouteEntry, isRuntimeEntry, routerPlugin, runtimePlugin, ssrPlugin };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const EXTENSIONS_SLOT = Symbol.for('@modern-js/runtime:context-extensions');
|
|
2
|
+
function getStore(context) {
|
|
3
|
+
return context[EXTENSIONS_SLOT];
|
|
4
|
+
}
|
|
5
|
+
function ensureStore(context) {
|
|
6
|
+
const target = context;
|
|
7
|
+
target[EXTENSIONS_SLOT] ??= new Map();
|
|
8
|
+
return target[EXTENSIONS_SLOT];
|
|
9
|
+
}
|
|
10
|
+
function stripRuntimeContextExtensions(context) {
|
|
11
|
+
delete context[EXTENSIONS_SLOT];
|
|
12
|
+
}
|
|
13
|
+
function createRuntimeContextExtension(id) {
|
|
14
|
+
const key = Symbol.for(`@modern-js/runtime:context-extension:${id}`);
|
|
15
|
+
return {
|
|
16
|
+
key,
|
|
17
|
+
get (context) {
|
|
18
|
+
return getStore(context)?.get(key);
|
|
19
|
+
},
|
|
20
|
+
set (context, value) {
|
|
21
|
+
ensureStore(context).set(key, value);
|
|
22
|
+
},
|
|
23
|
+
remove (context) {
|
|
24
|
+
getStore(context)?.delete(key);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export { createRuntimeContextExtension, stripRuntimeContextExtensions };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createRuntimeContextExtension } from "./extensions.mjs";
|
|
2
|
+
const helmetContextExtension = createRuntimeContextExtension('@modern-js/runtime:helmet-context');
|
|
3
|
+
function getHelmetContext(context) {
|
|
4
|
+
return helmetContextExtension.get(context);
|
|
5
|
+
}
|
|
6
|
+
function ensureHelmetContext(context) {
|
|
7
|
+
const existing = helmetContextExtension.get(context);
|
|
8
|
+
if (void 0 !== existing) return existing;
|
|
9
|
+
const created = {};
|
|
10
|
+
helmetContextExtension.set(context, created);
|
|
11
|
+
return created;
|
|
12
|
+
}
|
|
13
|
+
export { ensureHelmetContext, getHelmetContext };
|
|
@@ -40,6 +40,11 @@ function getGlobalLayoutApp() {
|
|
|
40
40
|
function getGlobalBasename() {
|
|
41
41
|
return globalContext.basename;
|
|
42
42
|
}
|
|
43
|
+
export { DefaultNotFound } from "../../router/runtime/DefaultNotFound.mjs";
|
|
44
|
+
export { modifyRoutes, onAfterCreateRouter, onAfterHydrateRouter, onBeforeCreateRouter, onBeforeCreateRoutes, onBeforeHydrateRouter } from "../../router/runtime/hooks.mjs";
|
|
45
|
+
export { applyRouterRuntimeState, applyRouterServerPrepareResult, cleanupRouterRuntimeState, createRouterRuntimeState, createRouterServerSnapshot, getRouterHydrationScripts, getRouterMatchedRouteIds, getRouterRuntimeState, getRouterServerSnapshot } from "../../router/runtime/lifecycle.mjs";
|
|
46
|
+
export { registerRouterProvider, resolveRouterProvider, routerProviderRegistryHooks } from "../../router/runtime/provider.mjs";
|
|
47
|
+
export { createRuntimeContextExtension } from "./extensions.mjs";
|
|
43
48
|
export { InternalRuntimeContext, RuntimeContext, getInitialContext } from "./runtime.mjs";
|
|
44
49
|
export { getServerPayload, setServerPayload } from "./serverPayload/index.mjs";
|
|
45
50
|
export { getCurrentEntryName, getGlobalApp, getGlobalBasename, getGlobalEnableRsc, getGlobalInternalRuntimeContext, getGlobalIsRscClient, getGlobalLayoutApp, getGlobalRSCRoot, getGlobalRoutes, setGlobalContext, setGlobalInternalRuntimeContext };
|
|
@@ -1,24 +1,26 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { HelmetProvider } from "react-helmet-async";
|
|
3
3
|
import { InternalRuntimeContext, RuntimeContext } from "../context/index.mjs";
|
|
4
|
+
import { stripRuntimeContextExtensions } from "../context/extensions.mjs";
|
|
5
|
+
import { ensureHelmetContext } from "../context/helmetContext.mjs";
|
|
4
6
|
function wrapRuntimeContextProvider(App, contextValue) {
|
|
5
|
-
const { isBrowser, initialData, routes,
|
|
7
|
+
const { isBrowser, initialData, routes, context, routeManifest, routerContext, unstable_getBlockNavState, ssrContext, _internalContext, _internalRouterBaseName, ...rest } = contextValue;
|
|
6
8
|
const internalContextValue = contextValue;
|
|
7
|
-
|
|
9
|
+
const helmetContext = ensureHelmetContext(internalContextValue);
|
|
8
10
|
const runtimeContextValue = {
|
|
9
11
|
isBrowser,
|
|
10
12
|
initialData,
|
|
11
13
|
routes,
|
|
12
|
-
routerFramework,
|
|
13
14
|
context,
|
|
14
15
|
...rest
|
|
15
16
|
};
|
|
17
|
+
stripRuntimeContextExtensions(runtimeContextValue);
|
|
16
18
|
return /*#__PURE__*/ jsx(InternalRuntimeContext.Provider, {
|
|
17
19
|
value: internalContextValue,
|
|
18
20
|
children: /*#__PURE__*/ jsx(RuntimeContext.Provider, {
|
|
19
21
|
value: runtimeContextValue,
|
|
20
22
|
children: /*#__PURE__*/ jsx(HelmetProvider, {
|
|
21
|
-
context:
|
|
23
|
+
context: helmetContext,
|
|
22
24
|
children: App
|
|
23
25
|
})
|
|
24
26
|
})
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getHelmetContext } from "../context/helmetContext.mjs";
|
|
1
2
|
import { safeReplace } from "./utils.mjs";
|
|
2
3
|
const EOL = '\n';
|
|
3
4
|
const RE_HTML_ATTR = /<html[^>]*>/;
|
|
@@ -6,7 +7,7 @@ const RE_LAST_IN_HEAD = /<\/head>/;
|
|
|
6
7
|
const RE_TITLE = /<title[^>]*>([\s\S\n\r]*?)<\/title>/;
|
|
7
8
|
const TEST_TITLE_CONTENT = /(?<=<title[^>]*>)([\s\S\n\r]*?)([.|\S])([\s\S\n\r]*?)(?=<\/title>)/;
|
|
8
9
|
function getHelmetData(runtimeContext) {
|
|
9
|
-
return runtimeContext
|
|
10
|
+
return getHelmetContext(runtimeContext)?.helmet ?? void 0;
|
|
10
11
|
}
|
|
11
12
|
function createReplaceHelemt(helmetData) {
|
|
12
13
|
return helmetData ? (template)=>helmetReplace(template, helmetData) : (tempalte)=>tempalte;
|