@modern-js/runtime 2.65.1 → 2.65.3
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/cache/index.js +22 -0
- package/dist/cjs/cli/code.js +1 -0
- package/dist/cjs/cli/ssr/index.js +1 -1
- package/dist/cjs/cli/template.js +7 -3
- package/dist/cjs/core/browser/index.js +1 -3
- package/dist/cjs/core/compat/requestContext.js +48 -0
- package/dist/cjs/core/compatible.js +2 -14
- package/dist/cjs/core/context/index.js +6 -0
- package/dist/cjs/core/context/monitors/default.js +38 -0
- package/dist/cjs/core/context/monitors/index.js +31 -0
- package/dist/cjs/core/context/monitors/index.server.js +33 -0
- package/dist/cjs/core/context/request/index.js +30 -0
- package/dist/cjs/core/context/request/index.server.js +32 -0
- package/dist/cjs/core/context/response/index.js +43 -0
- package/dist/cjs/core/context/response/index.server.js +62 -0
- package/dist/cjs/core/plugin/index.js +2 -0
- package/dist/cjs/core/server/requestHandler.js +83 -73
- package/dist/cjs/core/server/stream/shared.js +40 -45
- package/dist/cjs/core/server/string/index.js +50 -55
- package/dist/cjs/core/server/string/prefetch.js +47 -52
- package/dist/cjs/index.js +13 -0
- package/dist/cjs/react-server.js +38 -0
- package/dist/cjs/router/cli/code/templates.js +3 -1
- package/dist/cjs/router/cli/handler.js +1 -0
- package/dist/cjs/router/runtime/plugin.node.js +1 -2
- package/dist/cjs/router/runtime/utils.js +4 -6
- package/dist/esm/cache/index.js +1 -0
- package/dist/esm/cli/code.js +1 -0
- package/dist/esm/cli/ssr/index.js +1 -1
- package/dist/esm/cli/template.js +4 -4
- package/dist/esm/core/browser/index.js +3 -4
- package/dist/esm/core/compat/requestContext.js +25 -0
- package/dist/esm/core/compatible.js +5 -16
- package/dist/esm/core/context/index.js +5 -0
- package/dist/esm/core/context/monitors/default.js +20 -0
- package/dist/esm/core/context/monitors/index.js +7 -0
- package/dist/esm/core/context/monitors/index.server.js +9 -0
- package/dist/esm/core/context/request/index.js +6 -0
- package/dist/esm/core/context/request/index.server.js +8 -0
- package/dist/esm/core/context/response/index.js +16 -0
- package/dist/esm/core/context/response/index.server.js +41 -0
- package/dist/esm/core/plugin/index.js +3 -1
- package/dist/esm/core/server/requestHandler.js +134 -118
- package/dist/esm/core/server/stream/shared.js +49 -63
- package/dist/esm/core/server/string/index.js +82 -93
- package/dist/esm/core/server/string/prefetch.js +83 -94
- package/dist/esm/index.js +8 -0
- package/dist/esm/react-server.js +10 -0
- package/dist/esm/router/cli/code/templates.js +3 -3
- package/dist/esm/router/cli/handler.js +1 -0
- package/dist/esm/router/runtime/plugin.node.js +1 -2
- package/dist/esm/router/runtime/utils.js +4 -6
- package/dist/esm-node/cache/index.js +1 -0
- package/dist/esm-node/cli/code.js +1 -0
- package/dist/esm-node/cli/ssr/index.js +1 -1
- package/dist/esm-node/cli/template.js +7 -3
- package/dist/esm-node/core/browser/index.js +1 -3
- package/dist/esm-node/core/compat/requestContext.js +23 -0
- package/dist/esm-node/core/compatible.js +2 -14
- package/dist/esm-node/core/context/index.js +5 -0
- package/dist/esm-node/core/context/monitors/default.js +14 -0
- package/dist/esm-node/core/context/monitors/index.js +7 -0
- package/dist/esm-node/core/context/monitors/index.server.js +9 -0
- package/dist/esm-node/core/context/request/index.js +6 -0
- package/dist/esm-node/core/context/request/index.server.js +8 -0
- package/dist/esm-node/core/context/response/index.js +16 -0
- package/dist/esm-node/core/context/response/index.server.js +35 -0
- package/dist/esm-node/core/plugin/index.js +2 -0
- package/dist/esm-node/core/server/requestHandler.js +83 -73
- package/dist/esm-node/core/server/stream/shared.js +40 -45
- package/dist/esm-node/core/server/string/index.js +50 -55
- package/dist/esm-node/core/server/string/prefetch.js +47 -52
- package/dist/esm-node/index.js +8 -0
- package/dist/esm-node/react-server.js +10 -0
- package/dist/esm-node/router/cli/code/templates.js +3 -1
- package/dist/esm-node/router/cli/handler.js +1 -0
- package/dist/esm-node/router/runtime/plugin.node.js +1 -2
- package/dist/esm-node/router/runtime/utils.js +4 -6
- package/dist/types/cache/index.d.ts +1 -0
- package/dist/types/cli/template.d.ts +2 -1
- package/dist/types/core/compat/requestContext.d.ts +27 -0
- package/dist/types/core/compatible.d.ts +2 -2
- package/dist/types/core/config.d.ts +1 -1
- package/dist/types/core/context/index.d.ts +2 -0
- package/dist/types/core/context/monitors/default.d.ts +2 -0
- package/dist/types/core/context/monitors/index.d.ts +1 -0
- package/dist/types/core/context/monitors/index.server.d.ts +2 -0
- package/dist/types/core/context/request/index.d.ts +1 -0
- package/dist/types/core/context/request/index.server.d.ts +1 -0
- package/dist/types/core/context/response/index.d.ts +4 -0
- package/dist/types/core/context/response/index.server.d.ts +7 -0
- package/dist/types/core/context/runtime.d.ts +1 -0
- package/dist/types/core/types.d.ts +4 -17
- package/dist/types/index.d.ts +3 -0
- package/dist/types/react-server.d.ts +3 -0
- package/dist/types/router/cli/code/templates.d.ts +2 -1
- package/dist/types/router/runtime/utils.d.ts +3 -5
- package/package.json +22 -12
|
@@ -43,7 +43,7 @@ var import_remix_router = require("@modern-js/runtime-utils/remix-router");
|
|
|
43
43
|
var import_router = require("@modern-js/runtime-utils/router");
|
|
44
44
|
var import_DefaultNotFound = require("./DefaultNotFound");
|
|
45
45
|
var import_DeferredDataScripts = __toESM(require("./DeferredDataScripts"));
|
|
46
|
-
function getRouteComponents(routes, { globalApp, ssrMode, props
|
|
46
|
+
function getRouteComponents(routes, { globalApp, ssrMode, props }) {
|
|
47
47
|
const Layout = ({ Component, ...props2 }) => {
|
|
48
48
|
const GlobalLayout = globalApp;
|
|
49
49
|
if (!GlobalLayout) {
|
|
@@ -61,8 +61,7 @@ function getRouteComponents(routes, { globalApp, ssrMode, props, reporter }) {
|
|
|
61
61
|
if (route.type === "nested") {
|
|
62
62
|
const routeElement = (0, import_browser.renderNestedRoute)(route, {
|
|
63
63
|
DeferredDataComponent: ssrMode === "stream" ? import_DeferredDataScripts.default : void 0,
|
|
64
|
-
props
|
|
65
|
-
reporter
|
|
64
|
+
props
|
|
66
65
|
});
|
|
67
66
|
routeElements.push(routeElement);
|
|
68
67
|
} else {
|
|
@@ -81,7 +80,7 @@ function getRouteComponents(routes, { globalApp, ssrMode, props, reporter }) {
|
|
|
81
80
|
}, "*"));
|
|
82
81
|
return routeElements;
|
|
83
82
|
}
|
|
84
|
-
function renderRoutes({ routesConfig, props, ssrMode
|
|
83
|
+
function renderRoutes({ routesConfig, props, ssrMode }) {
|
|
85
84
|
if (!routesConfig) {
|
|
86
85
|
return null;
|
|
87
86
|
}
|
|
@@ -92,8 +91,7 @@ function renderRoutes({ routesConfig, props, ssrMode, reporter }) {
|
|
|
92
91
|
const routeElements = getRouteComponents(routes, {
|
|
93
92
|
globalApp,
|
|
94
93
|
ssrMode,
|
|
95
|
-
props
|
|
96
|
-
reporter
|
|
94
|
+
props
|
|
97
95
|
});
|
|
98
96
|
return routeElements;
|
|
99
97
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@modern-js/runtime-utils/cache";
|
package/dist/esm/cli/code.js
CHANGED
|
@@ -113,7 +113,7 @@ var ssrPlugin = function() {
|
|
|
113
113
|
source: {
|
|
114
114
|
alias: {
|
|
115
115
|
// ensure that all packages use the same storage in @modern-js/runtime-utils/node
|
|
116
|
-
"@modern-js/runtime-utils/node$": require.resolve("@modern-js/runtime-utils/node")
|
|
116
|
+
"@modern-js/runtime-utils/node$": require.resolve("@modern-js/runtime-utils/node").replace("".concat(path.sep, "cjs").concat(path.sep), "".concat(path.sep, "esm").concat(path.sep))
|
|
117
117
|
}
|
|
118
118
|
},
|
|
119
119
|
tools: {
|
package/dist/esm/cli/template.js
CHANGED
|
@@ -32,7 +32,7 @@ var getImportRuntimeConfigCode = function(srcDirectory, internalSrcAlias, runtim
|
|
|
32
32
|
if (runtimeConfigFile && findExists(JS_EXTENSIONS.map(function(ext) {
|
|
33
33
|
return path.resolve(srcDirectory, "".concat(runtimeConfigFile).concat(ext));
|
|
34
34
|
}))) {
|
|
35
|
-
return "import
|
|
35
|
+
return "import modernRuntime from '".concat(internalSrcAlias, "/").concat(runtimeConfigFile, "';\nconst runtimeConfig = typeof modernRuntime === 'function' ? modernRuntime(getCurrentEntryName()) : modernRuntime");
|
|
36
36
|
}
|
|
37
37
|
return "let runtimeConfig;";
|
|
38
38
|
};
|
|
@@ -42,14 +42,14 @@ var getRegisterRuntimePluginCode = function(entryName, name, config) {
|
|
|
42
42
|
};
|
|
43
43
|
var runtimeRegister = function(param) {
|
|
44
44
|
var entryName = param.entryName, srcDirectory = param.srcDirectory, internalSrcAlias = param.internalSrcAlias, metaName = param.metaName, runtimeConfigFile = param.runtimeConfigFile, runtimePlugins = param.runtimePlugins;
|
|
45
|
-
return "import { registerPlugin, mergeConfig } from '@".concat(metaName, "/runtime/plugin';\nimport { getGlobalAppConfig, getGlobalLayoutApp } from '@").concat(metaName, "/runtime/context';\n").concat(getImportRuntimeConfigCode(srcDirectory, internalSrcAlias, runtimeConfigFile), "\n\nconst plugins = [];\n\n").concat(runtimePlugins.map(function(param2) {
|
|
45
|
+
return "import { registerPlugin, mergeConfig } from '@".concat(metaName, "/runtime/plugin';\nimport { getGlobalAppConfig, getGlobalLayoutApp, getCurrentEntryName } from '@").concat(metaName, "/runtime/context';\n\n").concat(getImportRuntimeConfigCode(srcDirectory, internalSrcAlias, runtimeConfigFile), "\n\nconst plugins = [];\n\n").concat(runtimePlugins.map(function(param2) {
|
|
46
46
|
var name = param2.name, path2 = param2.path, config = param2.config;
|
|
47
47
|
return "import { ".concat(name, "Plugin } from '").concat(path2, "';\n\n").concat(getRegisterRuntimePluginCode(entryName, name, config), "\n");
|
|
48
48
|
}).join("\n"), "\nregisterPlugin(plugins, runtimeConfig);\n");
|
|
49
49
|
};
|
|
50
50
|
var runtimeGlobalContext = function(param) {
|
|
51
|
-
var srcDirectory = param.srcDirectory, internalSrcAlias = param.internalSrcAlias, metaName = param.metaName, entry = param.entry, customEntry = param.customEntry;
|
|
52
|
-
return "import { setGlobalContext } from '@".concat(metaName, "/runtime/context'\n\nimport App from '").concat(formatImportPath(customEntry ? entry.replace(/entry\.[tj]sx/, "App").replace(srcDirectory, internalSrcAlias) : entry.replace(srcDirectory, internalSrcAlias).replace(/\.[tj]sx/, "")), "';\n\nsetGlobalContext({\n App,\n});");
|
|
51
|
+
var entryName = param.entryName, srcDirectory = param.srcDirectory, internalSrcAlias = param.internalSrcAlias, metaName = param.metaName, entry = param.entry, customEntry = param.customEntry;
|
|
52
|
+
return "import { setGlobalContext } from '@".concat(metaName, "/runtime/context'\n\nimport App from '").concat(formatImportPath(customEntry ? entry.replace(/entry\.[tj]sx/, "App").replace(srcDirectory, internalSrcAlias) : entry.replace(srcDirectory, internalSrcAlias).replace(/\.[tj]sx/, "")), "';\n\nconst entryName = '").concat(entryName, "';\nsetGlobalContext({\n entryName,\n App,\n});");
|
|
53
53
|
};
|
|
54
54
|
var runtimeGlobalContextForRSCServer = function(param) {
|
|
55
55
|
var metaName = param.metaName;
|
|
@@ -133,15 +133,14 @@ function _render() {
|
|
|
133
133
|
res[key] = loaderData;
|
|
134
134
|
return res;
|
|
135
135
|
}, {});
|
|
136
|
-
Object.assign(context,
|
|
136
|
+
Object.assign(context, {
|
|
137
137
|
loaderManager: createLoaderManager(initialLoadersState, {
|
|
138
138
|
skipStatic: true
|
|
139
139
|
}),
|
|
140
140
|
// garfish plugin params
|
|
141
|
-
_internalRouterBaseName: App.props.basename
|
|
142
|
-
}, {
|
|
141
|
+
_internalRouterBaseName: App.props.basename,
|
|
143
142
|
ssrContext: ssrData.context
|
|
144
|
-
})
|
|
143
|
+
});
|
|
145
144
|
context.initialData = (_ssrData_data1 = ssrData.data) === null || _ssrData_data1 === void 0 ? void 0 : _ssrData_data1.initialData;
|
|
146
145
|
return [
|
|
147
146
|
4,
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
var makeRequestContext = function(context) {
|
|
2
|
+
var baseSSRContext = context.ssrContext;
|
|
3
|
+
var requestContext = baseSSRContext ? {
|
|
4
|
+
isBrowser: context.isBrowser,
|
|
5
|
+
request: baseSSRContext.request || {},
|
|
6
|
+
response: baseSSRContext.response || {},
|
|
7
|
+
logger: baseSSRContext.logger || {}
|
|
8
|
+
} : {};
|
|
9
|
+
return requestContext;
|
|
10
|
+
};
|
|
11
|
+
var requestContextPlugin = function() {
|
|
12
|
+
return {
|
|
13
|
+
name: "@modern-js/runtime-plugin-request-context",
|
|
14
|
+
setup: function setup(api) {
|
|
15
|
+
api.onBeforeRender(function(context) {
|
|
16
|
+
var requestContext = makeRequestContext(context);
|
|
17
|
+
context.context = requestContext;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export {
|
|
23
|
+
makeRequestContext,
|
|
24
|
+
requestContextPlugin
|
|
25
|
+
};
|
|
@@ -106,13 +106,12 @@ var bootstrap = function() {
|
|
|
106
106
|
res[key] = loaderData;
|
|
107
107
|
return res;
|
|
108
108
|
}, {});
|
|
109
|
-
Object.assign(context,
|
|
109
|
+
Object.assign(context, {
|
|
110
110
|
loaderManager: createLoaderManager(initialLoadersState, {
|
|
111
111
|
skipStatic: true
|
|
112
|
-
})
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
} : {}));
|
|
112
|
+
}),
|
|
113
|
+
ssrContext: (ssrData === null || ssrData === void 0 ? void 0 : ssrData.context) || {}
|
|
114
|
+
});
|
|
116
115
|
context.initialData = ssrData === null || ssrData === void 0 ? void 0 : (_ssrData_data1 = ssrData.data) === null || _ssrData_data1 === void 0 ? void 0 : _ssrData_data1.initialData;
|
|
117
116
|
return [
|
|
118
117
|
4,
|
|
@@ -195,18 +194,8 @@ var bootstrap = function() {
|
|
|
195
194
|
var useRuntimeContext = function() {
|
|
196
195
|
var _context_ssrContext, _context_ssrContext1;
|
|
197
196
|
var context = useContext(RuntimeReactContext);
|
|
198
|
-
var baseSSRContext = context.ssrContext;
|
|
199
|
-
var tSSRContext = baseSSRContext ? {
|
|
200
|
-
isBrowser: context.isBrowser,
|
|
201
|
-
request: baseSSRContext.request || {},
|
|
202
|
-
response: baseSSRContext.response || {},
|
|
203
|
-
logger: baseSSRContext.logger || {},
|
|
204
|
-
getInitData: function() {
|
|
205
|
-
return Object.freeze(context.initialData);
|
|
206
|
-
}
|
|
207
|
-
} : {};
|
|
208
197
|
var pickedContext = _object_spread_props(_object_spread({}, context), {
|
|
209
|
-
context:
|
|
198
|
+
context: context.context || {},
|
|
210
199
|
request: (_context_ssrContext = context.ssrContext) === null || _context_ssrContext === void 0 ? void 0 : _context_ssrContext.request,
|
|
211
200
|
response: (_context_ssrContext1 = context.ssrContext) === null || _context_ssrContext1 === void 0 ? void 0 : _context_ssrContext1.response
|
|
212
201
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { RuntimeReactContext, getInitialContext } from "./runtime";
|
|
2
2
|
var globalContext = {};
|
|
3
3
|
function setGlobalContext(context) {
|
|
4
|
+
globalContext.entryName = context.entryName;
|
|
4
5
|
globalContext.App = context.App;
|
|
5
6
|
globalContext.routes = context.routes;
|
|
6
7
|
globalContext.appInit = context.appInit;
|
|
@@ -8,6 +9,9 @@ function setGlobalContext(context) {
|
|
|
8
9
|
globalContext.layoutApp = context.layoutApp;
|
|
9
10
|
globalContext.RSCRoot = context.RSCRoot;
|
|
10
11
|
}
|
|
12
|
+
function getCurrentEntryName() {
|
|
13
|
+
return globalContext.entryName;
|
|
14
|
+
}
|
|
11
15
|
function getGlobalRSCRoot() {
|
|
12
16
|
return globalContext.RSCRoot;
|
|
13
17
|
}
|
|
@@ -36,6 +40,7 @@ function getGlobalLayoutApp() {
|
|
|
36
40
|
}
|
|
37
41
|
export {
|
|
38
42
|
RuntimeReactContext,
|
|
43
|
+
getCurrentEntryName,
|
|
39
44
|
getGlobalApp,
|
|
40
45
|
getGlobalAppConfig,
|
|
41
46
|
getGlobalAppInit,
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
var defaultMonitors = {
|
|
2
|
+
counter: function counter(name) {
|
|
3
|
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
4
|
+
args[_key - 1] = arguments[_key];
|
|
5
|
+
}
|
|
6
|
+
},
|
|
7
|
+
info: console.info,
|
|
8
|
+
debug: console.debug,
|
|
9
|
+
trace: console.trace,
|
|
10
|
+
warn: console.warn,
|
|
11
|
+
error: console.error,
|
|
12
|
+
timing: function timing(name, dur) {
|
|
13
|
+
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
|
14
|
+
args[_key - 2] = arguments[_key];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
defaultMonitors
|
|
20
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { storage } from "@modern-js/runtime-utils/node";
|
|
2
|
+
import { defaultMonitors } from "./default";
|
|
3
|
+
var getMonitors = function() {
|
|
4
|
+
var storageContext = storage.useContext();
|
|
5
|
+
return storageContext.monitors || defaultMonitors;
|
|
6
|
+
};
|
|
7
|
+
export {
|
|
8
|
+
getMonitors
|
|
9
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
var getResponseProxy = function() {
|
|
2
|
+
return null;
|
|
3
|
+
};
|
|
4
|
+
var setHeaders = function(headers) {
|
|
5
|
+
};
|
|
6
|
+
var setStatus = function(status) {
|
|
7
|
+
};
|
|
8
|
+
var redirect = function(url, init) {
|
|
9
|
+
console.warn("You should not use this API in the browser, please use the router's redirect or useNavigate method.");
|
|
10
|
+
};
|
|
11
|
+
export {
|
|
12
|
+
getResponseProxy,
|
|
13
|
+
redirect,
|
|
14
|
+
setHeaders,
|
|
15
|
+
setStatus
|
|
16
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
2
|
+
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
|
|
3
|
+
import { _ as _type_of } from "@swc/helpers/_/_type_of";
|
|
4
|
+
import { storage } from "@modern-js/runtime-utils/node";
|
|
5
|
+
var getResponseProxy = function() {
|
|
6
|
+
var context = storage.useContext();
|
|
7
|
+
return context === null || context === void 0 ? void 0 : context.responseProxy;
|
|
8
|
+
};
|
|
9
|
+
var setHeaders = function(headers) {
|
|
10
|
+
var responseProxy = getResponseProxy();
|
|
11
|
+
Object.entries(headers).forEach(function(param) {
|
|
12
|
+
var _param = _sliced_to_array(param, 2), key = _param[0], value = _param[1];
|
|
13
|
+
responseProxy.headers[key] = value;
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
var setStatus = function(status) {
|
|
17
|
+
var responseProxy = getResponseProxy();
|
|
18
|
+
responseProxy.status = status;
|
|
19
|
+
};
|
|
20
|
+
var redirect = function(url, init) {
|
|
21
|
+
var _init_status;
|
|
22
|
+
var status = init === void 0 ? 307 : typeof init === "number" ? init : (_init_status = init.status) !== null && _init_status !== void 0 ? _init_status : 307;
|
|
23
|
+
var _init_headers;
|
|
24
|
+
var headers = init === void 0 ? {} : typeof init === "number" ? {} : (_init_headers = init.headers) !== null && _init_headers !== void 0 ? _init_headers : {};
|
|
25
|
+
setStatus(status);
|
|
26
|
+
setHeaders(_object_spread({
|
|
27
|
+
Location: url
|
|
28
|
+
}, init && (typeof init === "undefined" ? "undefined" : _type_of(init)) === "object" ? Object.fromEntries(Object.entries(headers).map(function(param) {
|
|
29
|
+
var _param = _sliced_to_array(param, 2), k = _param[0], v = _param[1];
|
|
30
|
+
return [
|
|
31
|
+
k,
|
|
32
|
+
String(v)
|
|
33
|
+
];
|
|
34
|
+
})) : {}));
|
|
35
|
+
};
|
|
36
|
+
export {
|
|
37
|
+
getResponseProxy,
|
|
38
|
+
redirect,
|
|
39
|
+
setHeaders,
|
|
40
|
+
setStatus
|
|
41
|
+
};
|
|
@@ -3,12 +3,14 @@ import { runtime } from "@modern-js/plugin-v2/runtime";
|
|
|
3
3
|
import { merge } from "@modern-js/runtime-utils/merge";
|
|
4
4
|
import { compatPlugin } from "../compat";
|
|
5
5
|
import { handleSetupResult } from "../compat/hooks";
|
|
6
|
+
import { requestContextPlugin } from "../compat/requestContext";
|
|
6
7
|
import { setGlobalInternalRuntimeContext } from "../context";
|
|
7
8
|
function registerPlugin(internalPlugins, runtimeConfig) {
|
|
8
9
|
var _ref = runtimeConfig || {}, _ref_plugins = _ref.plugins, plugins = _ref_plugins === void 0 ? [] : _ref_plugins;
|
|
9
10
|
var runtimeContext = runtime.run({
|
|
10
11
|
plugins: [
|
|
11
|
-
compatPlugin()
|
|
12
|
+
compatPlugin(),
|
|
13
|
+
requestContextPlugin()
|
|
12
14
|
].concat(_to_consumable_array(internalPlugins), _to_consumable_array(plugins)),
|
|
13
15
|
config: runtimeConfig || {},
|
|
14
16
|
handleSetupResult
|
|
@@ -5,6 +5,7 @@ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
|
|
5
5
|
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
|
|
6
6
|
import { _ as _type_of } from "@swc/helpers/_/_type_of";
|
|
7
7
|
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
8
|
+
import { storage } from "@modern-js/runtime-utils/node";
|
|
8
9
|
import { getPathname, parseCookie, parseHeaders, parseQuery } from "@modern-js/runtime-utils/universal/request";
|
|
9
10
|
import { getGlobalAppInit, getGlobalInternalRuntimeContext, getGlobalRSCRoot } from "../context";
|
|
10
11
|
import { getInitialContext } from "../context/runtime";
|
|
@@ -51,6 +52,7 @@ function createSSRContext(request, options) {
|
|
|
51
52
|
params,
|
|
52
53
|
headers: headersData,
|
|
53
54
|
host,
|
|
55
|
+
referer: headers.get("referer"),
|
|
54
56
|
raw: request
|
|
55
57
|
},
|
|
56
58
|
response: {
|
|
@@ -58,7 +60,7 @@ function createSSRContext(request, options) {
|
|
|
58
60
|
responseProxy.headers[key] = value;
|
|
59
61
|
},
|
|
60
62
|
status: function status(code) {
|
|
61
|
-
responseProxy.
|
|
63
|
+
responseProxy.status = code;
|
|
62
64
|
},
|
|
63
65
|
locals: locals || {}
|
|
64
66
|
},
|
|
@@ -75,129 +77,143 @@ var createRequestHandler = function() {
|
|
|
75
77
|
return _ts_generator(this, function(_state) {
|
|
76
78
|
requestHandler = function() {
|
|
77
79
|
var _ref2 = _async_to_generator(function(request, options) {
|
|
78
|
-
var
|
|
80
|
+
var headersData, responseProxy;
|
|
79
81
|
return _ts_generator(this, function(_state2) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
82
|
+
headersData = parseHeaders(request);
|
|
83
|
+
responseProxy = {
|
|
84
|
+
headers: {},
|
|
85
|
+
status: -1
|
|
86
|
+
};
|
|
87
|
+
return [
|
|
88
|
+
2,
|
|
89
|
+
storage.run({
|
|
90
|
+
headers: headersData,
|
|
91
|
+
request,
|
|
92
|
+
monitors: options.monitors,
|
|
93
|
+
responseProxy
|
|
94
|
+
}, /* @__PURE__ */ _async_to_generator(function() {
|
|
95
|
+
var _context_routerContext, _context_routerContext1, _context_routerContext2, Root, internalRuntimeContext, hooks, routeManifest, context, runBeforeRender, ssrContext, getRedirectResponse, initialData, _context_routerContext3, _context_ssrContext, errors, redirectResponse, htmlTemplate, response;
|
|
96
|
+
return _ts_generator(this, function(_state3) {
|
|
97
|
+
switch (_state3.label) {
|
|
98
|
+
case 0:
|
|
99
|
+
Root = createRoot();
|
|
100
|
+
internalRuntimeContext = getGlobalInternalRuntimeContext();
|
|
101
|
+
hooks = internalRuntimeContext.hooks;
|
|
102
|
+
routeManifest = options.resource.routeManifest;
|
|
103
|
+
context = getInitialContext(false, routeManifest);
|
|
104
|
+
runBeforeRender = function() {
|
|
105
|
+
var _ref3 = _async_to_generator(function(context2) {
|
|
106
|
+
var result, init;
|
|
107
|
+
return _ts_generator(this, function(_state4) {
|
|
108
|
+
switch (_state4.label) {
|
|
109
|
+
case 0:
|
|
110
|
+
return [
|
|
111
|
+
4,
|
|
112
|
+
hooks.onBeforeRender.call(context2)
|
|
113
|
+
];
|
|
114
|
+
case 1:
|
|
115
|
+
result = _state4.sent();
|
|
116
|
+
if (typeof Response !== "undefined" && _instanceof(result, Response)) {
|
|
117
|
+
return [
|
|
118
|
+
2,
|
|
119
|
+
result
|
|
120
|
+
];
|
|
121
|
+
}
|
|
122
|
+
init = getGlobalAppInit();
|
|
123
|
+
return [
|
|
124
|
+
2,
|
|
125
|
+
init === null || init === void 0 ? void 0 : init(context2)
|
|
126
|
+
];
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
return function runBeforeRender2(context2) {
|
|
131
|
+
return _ref3.apply(this, arguments);
|
|
132
|
+
};
|
|
133
|
+
}();
|
|
134
|
+
ssrContext = createSSRContext(request, _object_spread_props(_object_spread({}, options), {
|
|
135
|
+
responseProxy
|
|
136
|
+
}));
|
|
137
|
+
Object.assign(context, {
|
|
138
|
+
ssrContext,
|
|
139
|
+
isBrowser: false,
|
|
140
|
+
loaderManager: createLoaderManager({}, {
|
|
141
|
+
skipNonStatic: options.staticGenerate,
|
|
142
|
+
// if not static generate, only non-static loader can exec on prod env
|
|
143
|
+
skipStatic: process.env.NODE_ENV === "production" && !options.staticGenerate
|
|
144
|
+
})
|
|
145
|
+
});
|
|
146
|
+
getRedirectResponse = function(result) {
|
|
147
|
+
if (typeof Response !== "undefined" && // fix: ssg workflow doesn't inject Web Response
|
|
148
|
+
_instanceof(result, Response) && result.status >= 300 && result.status <= 399) {
|
|
149
|
+
var status = result.status;
|
|
150
|
+
var redirectUrl = result.headers.get("Location") || "/";
|
|
151
|
+
var ssrContext2 = context.ssrContext;
|
|
152
|
+
if (ssrContext2) {
|
|
153
|
+
return new Response(null, {
|
|
154
|
+
status,
|
|
155
|
+
headers: {
|
|
156
|
+
Location: redirectUrl
|
|
157
|
+
}
|
|
158
|
+
});
|
|
104
159
|
}
|
|
105
|
-
init = getGlobalAppInit();
|
|
106
|
-
return [
|
|
107
|
-
2,
|
|
108
|
-
init === null || init === void 0 ? void 0 : init(context2)
|
|
109
|
-
];
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
return function runBeforeRender2(context2) {
|
|
114
|
-
return _ref3.apply(this, arguments);
|
|
115
|
-
};
|
|
116
|
-
}();
|
|
117
|
-
responseProxy = {
|
|
118
|
-
headers: {},
|
|
119
|
-
code: -1
|
|
120
|
-
};
|
|
121
|
-
ssrContext = createSSRContext(request, _object_spread_props(_object_spread({}, options), {
|
|
122
|
-
responseProxy
|
|
123
|
-
}));
|
|
124
|
-
Object.assign(context, {
|
|
125
|
-
ssrContext,
|
|
126
|
-
isBrowser: false,
|
|
127
|
-
loaderManager: createLoaderManager({}, {
|
|
128
|
-
skipNonStatic: options.staticGenerate,
|
|
129
|
-
// if not static generate, only non-static loader can exec on prod env
|
|
130
|
-
skipStatic: process.env.NODE_ENV === "production" && !options.staticGenerate
|
|
131
|
-
})
|
|
132
|
-
});
|
|
133
|
-
getRedirectResponse = function(result) {
|
|
134
|
-
if (typeof Response !== "undefined" && // fix: ssg workflow doesn't inject Web Response
|
|
135
|
-
_instanceof(result, Response) && result.status >= 300 && result.status <= 399) {
|
|
136
|
-
var status = result.status;
|
|
137
|
-
var redirectUrl = result.headers.get("Location") || "/";
|
|
138
|
-
var ssrContext2 = context.ssrContext;
|
|
139
|
-
if (ssrContext2) {
|
|
140
|
-
return new Response(null, {
|
|
141
|
-
status,
|
|
142
|
-
headers: {
|
|
143
|
-
Location: redirectUrl
|
|
144
160
|
}
|
|
161
|
+
return void 0;
|
|
162
|
+
};
|
|
163
|
+
return [
|
|
164
|
+
4,
|
|
165
|
+
runBeforeRender(context)
|
|
166
|
+
];
|
|
167
|
+
case 1:
|
|
168
|
+
initialData = _state3.sent();
|
|
169
|
+
if (((_context_routerContext = context.routerContext) === null || _context_routerContext === void 0 ? void 0 : _context_routerContext.statusCode) && ((_context_routerContext1 = context.routerContext) === null || _context_routerContext1 === void 0 ? void 0 : _context_routerContext1.statusCode) !== 200) {
|
|
170
|
+
;
|
|
171
|
+
(_context_ssrContext = context.ssrContext) === null || _context_ssrContext === void 0 ? void 0 : _context_ssrContext.response.status((_context_routerContext3 = context.routerContext) === null || _context_routerContext3 === void 0 ? void 0 : _context_routerContext3.statusCode);
|
|
172
|
+
}
|
|
173
|
+
errors = Object.values(((_context_routerContext2 = context.routerContext) === null || _context_routerContext2 === void 0 ? void 0 : _context_routerContext2.errors) || {});
|
|
174
|
+
if (errors.length > 0) {
|
|
175
|
+
options.onError(errors[0], SSRErrors.LOADER_ERROR);
|
|
176
|
+
}
|
|
177
|
+
context.initialData = initialData;
|
|
178
|
+
redirectResponse = getRedirectResponse(initialData);
|
|
179
|
+
if (redirectResponse) {
|
|
180
|
+
return [
|
|
181
|
+
2,
|
|
182
|
+
redirectResponse
|
|
183
|
+
];
|
|
184
|
+
}
|
|
185
|
+
htmlTemplate = options.resource.htmlTemplate;
|
|
186
|
+
options.resource.htmlTemplate = htmlTemplate.replace("</head>", "".concat(CHUNK_CSS_PLACEHOLDER, "</head>"));
|
|
187
|
+
return [
|
|
188
|
+
4,
|
|
189
|
+
handleRequest(request, Root, _object_spread_props(_object_spread({}, options), {
|
|
190
|
+
runtimeContext: context,
|
|
191
|
+
RSCRoot: (createRequestOptions === null || createRequestOptions === void 0 ? void 0 : createRequestOptions.enableRsc) && getGlobalRSCRoot()
|
|
192
|
+
}))
|
|
193
|
+
];
|
|
194
|
+
case 2:
|
|
195
|
+
response = _state3.sent();
|
|
196
|
+
Object.entries(responseProxy.headers).forEach(function(param) {
|
|
197
|
+
var _param = _sliced_to_array(param, 2), key = _param[0], value = _param[1];
|
|
198
|
+
response.headers.set(key, value);
|
|
145
199
|
});
|
|
146
|
-
|
|
200
|
+
if (responseProxy.status !== -1) {
|
|
201
|
+
return [
|
|
202
|
+
2,
|
|
203
|
+
new Response(response.body, {
|
|
204
|
+
status: responseProxy.status,
|
|
205
|
+
headers: response.headers
|
|
206
|
+
})
|
|
207
|
+
];
|
|
208
|
+
}
|
|
209
|
+
return [
|
|
210
|
+
2,
|
|
211
|
+
response
|
|
212
|
+
];
|
|
147
213
|
}
|
|
148
|
-
return void 0;
|
|
149
|
-
};
|
|
150
|
-
return [
|
|
151
|
-
4,
|
|
152
|
-
runBeforeRender(context)
|
|
153
|
-
];
|
|
154
|
-
case 1:
|
|
155
|
-
initialData = _state2.sent();
|
|
156
|
-
if (((_context_routerContext = context.routerContext) === null || _context_routerContext === void 0 ? void 0 : _context_routerContext.statusCode) && ((_context_routerContext1 = context.routerContext) === null || _context_routerContext1 === void 0 ? void 0 : _context_routerContext1.statusCode) !== 200) {
|
|
157
|
-
;
|
|
158
|
-
(_context_ssrContext = context.ssrContext) === null || _context_ssrContext === void 0 ? void 0 : _context_ssrContext.response.status((_context_routerContext3 = context.routerContext) === null || _context_routerContext3 === void 0 ? void 0 : _context_routerContext3.statusCode);
|
|
159
|
-
}
|
|
160
|
-
errors = Object.values(((_context_routerContext2 = context.routerContext) === null || _context_routerContext2 === void 0 ? void 0 : _context_routerContext2.errors) || {});
|
|
161
|
-
if (errors.length > 0) {
|
|
162
|
-
options.onError(errors[0], SSRErrors.LOADER_ERROR);
|
|
163
|
-
}
|
|
164
|
-
context.initialData = initialData;
|
|
165
|
-
redirectResponse = getRedirectResponse(initialData);
|
|
166
|
-
if (redirectResponse) {
|
|
167
|
-
return [
|
|
168
|
-
2,
|
|
169
|
-
redirectResponse
|
|
170
|
-
];
|
|
171
|
-
}
|
|
172
|
-
htmlTemplate = options.resource.htmlTemplate;
|
|
173
|
-
options.resource.htmlTemplate = htmlTemplate.replace("</head>", "".concat(CHUNK_CSS_PLACEHOLDER, "</head>"));
|
|
174
|
-
return [
|
|
175
|
-
4,
|
|
176
|
-
handleRequest(request, Root, _object_spread_props(_object_spread({}, options), {
|
|
177
|
-
runtimeContext: context,
|
|
178
|
-
RSCRoot: (createRequestOptions === null || createRequestOptions === void 0 ? void 0 : createRequestOptions.enableRsc) && getGlobalRSCRoot()
|
|
179
|
-
}))
|
|
180
|
-
];
|
|
181
|
-
case 2:
|
|
182
|
-
response = _state2.sent();
|
|
183
|
-
Object.entries(responseProxy.headers).forEach(function(param) {
|
|
184
|
-
var _param = _sliced_to_array(param, 2), key = _param[0], value = _param[1];
|
|
185
|
-
response.headers.set(key, value);
|
|
186
214
|
});
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
2,
|
|
190
|
-
new Response(response.body, {
|
|
191
|
-
status: responseProxy.code,
|
|
192
|
-
headers: response.headers
|
|
193
|
-
})
|
|
194
|
-
];
|
|
195
|
-
}
|
|
196
|
-
return [
|
|
197
|
-
2,
|
|
198
|
-
response
|
|
199
|
-
];
|
|
200
|
-
}
|
|
215
|
+
}))
|
|
216
|
+
];
|
|
201
217
|
});
|
|
202
218
|
});
|
|
203
219
|
return function requestHandler2(request, options) {
|