@modern-js/server-core 2.49.4 → 2.49.5-alpha.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/base/index.js +2 -0
- package/dist/cjs/base/middlewares/customServer/index.js +50 -10
- package/dist/cjs/base/middlewares/customServer/loader.js +37 -0
- package/dist/cjs/base/middlewares/index.js +9 -0
- package/dist/cjs/base/middlewares/renderHandler/index.js +10 -2
- package/dist/cjs/base/middlewares/renderHandler/render.js +4 -3
- package/dist/cjs/base/middlewares/renderHandler/ssrCache.js +1 -1
- package/dist/cjs/base/middlewares/renderHandler/ssrRender.js +2 -1
- package/dist/cjs/base/utils/index.js +3 -3
- package/dist/cjs/base/utils/request.js +19 -6
- package/dist/esm/base/index.js +2 -1
- package/dist/esm/base/middlewares/customServer/index.js +122 -59
- package/dist/esm/base/middlewares/customServer/loader.js +13 -0
- package/dist/esm/base/middlewares/index.js +4 -0
- package/dist/esm/base/middlewares/renderHandler/index.js +75 -27
- package/dist/esm/base/middlewares/renderHandler/render.js +5 -4
- package/dist/esm/base/middlewares/renderHandler/ssrCache.js +1 -1
- package/dist/esm/base/middlewares/renderHandler/ssrRender.js +3 -2
- package/dist/esm/base/utils/index.js +1 -1
- package/dist/esm/base/utils/request.js +18 -6
- package/dist/esm-node/base/index.js +2 -1
- package/dist/esm-node/base/middlewares/customServer/index.js +48 -9
- package/dist/esm-node/base/middlewares/customServer/loader.js +13 -0
- package/dist/esm-node/base/middlewares/index.js +4 -0
- package/dist/esm-node/base/middlewares/renderHandler/index.js +11 -3
- package/dist/esm-node/base/middlewares/renderHandler/render.js +4 -3
- package/dist/esm-node/base/middlewares/renderHandler/ssrCache.js +1 -1
- package/dist/esm-node/base/middlewares/renderHandler/ssrRender.js +2 -1
- package/dist/esm-node/base/utils/index.js +1 -1
- package/dist/esm-node/base/utils/request.js +18 -6
- package/dist/types/base/index.d.ts +1 -1
- package/dist/types/base/middlewares/customServer/index.d.ts +2 -1
- package/dist/types/base/middlewares/customServer/loader.d.ts +10 -0
- package/dist/types/base/middlewares/index.d.ts +1 -0
- package/dist/types/base/middlewares/renderHandler/ssrRender.d.ts +2 -1
- package/dist/types/base/utils/index.d.ts +1 -1
- package/dist/types/base/utils/request.d.ts +7 -2
- package/dist/types/core/plugin.d.ts +8 -8
- package/dist/types/core/render.d.ts +1 -0
- package/package.json +5 -5
package/dist/cjs/base/index.js
CHANGED
|
@@ -24,6 +24,7 @@ __export(base_exports, {
|
|
|
24
24
|
createErrorHtml: () => import_utils.createErrorHtml,
|
|
25
25
|
createServerBase: () => import_serverBase.createServerBase,
|
|
26
26
|
favionFallbackMiddleware: () => import_middlewares.favionFallbackMiddleware,
|
|
27
|
+
getLoaderCtx: () => import_middlewares.getLoaderCtx,
|
|
27
28
|
getRenderHandler: () => import_middlewares.getRenderHandler,
|
|
28
29
|
injectLogger: () => import_middlewares.injectLogger,
|
|
29
30
|
injectReporter: () => import_middlewares.injectReporter,
|
|
@@ -44,6 +45,7 @@ var import_serverBase = require("./serverBase");
|
|
|
44
45
|
createErrorHtml,
|
|
45
46
|
createServerBase,
|
|
46
47
|
favionFallbackMiddleware,
|
|
48
|
+
getLoaderCtx,
|
|
47
49
|
getRenderHandler,
|
|
48
50
|
injectLogger,
|
|
49
51
|
injectReporter,
|
|
@@ -18,14 +18,17 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var customServer_exports = {};
|
|
20
20
|
__export(customServer_exports, {
|
|
21
|
-
CustomServer: () => CustomServer
|
|
21
|
+
CustomServer: () => CustomServer,
|
|
22
|
+
getLoaderCtx: () => import_loader2.getLoaderCtx
|
|
22
23
|
});
|
|
23
24
|
module.exports = __toCommonJS(customServer_exports);
|
|
24
25
|
var import_time = require("@modern-js/runtime-utils/time");
|
|
25
26
|
var import_utils = require("../../utils");
|
|
26
27
|
var import_constants = require("../../constants");
|
|
28
|
+
var import_loader = require("./loader");
|
|
27
29
|
var import_context = require("./context");
|
|
28
30
|
var import_base = require("./base");
|
|
31
|
+
var import_loader2 = require("./loader");
|
|
29
32
|
const noop = () => {
|
|
30
33
|
};
|
|
31
34
|
const isHtmlResponse = (response) => {
|
|
@@ -93,13 +96,16 @@ class CustomServer {
|
|
|
93
96
|
}
|
|
94
97
|
};
|
|
95
98
|
}
|
|
96
|
-
getServerMiddleware() {
|
|
99
|
+
async getServerMiddleware() {
|
|
100
|
+
const serverMiddleware = await this.serverMiddlewarePromise;
|
|
101
|
+
if (!serverMiddleware) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (Array.isArray(serverMiddleware)) {
|
|
105
|
+
return getUnstableMiddlewares(serverMiddleware);
|
|
106
|
+
}
|
|
97
107
|
return async (c, next) => {
|
|
98
|
-
var _c_env;
|
|
99
|
-
const serverMiddleware = await this.serverMiddlewarePromise;
|
|
100
|
-
if (!serverMiddleware) {
|
|
101
|
-
return next();
|
|
102
|
-
}
|
|
108
|
+
var _c_env_node_res, _c_env_node, _c_env;
|
|
103
109
|
const reporter = c.get("reporter");
|
|
104
110
|
const locals = {};
|
|
105
111
|
const resArgs = {
|
|
@@ -114,7 +120,7 @@ class CustomServer {
|
|
|
114
120
|
if (isRedirect(resArgs.headers, resArgs.status)) {
|
|
115
121
|
return c.redirect(resArgs.headers.get("Location") || "", resArgs.status || 302);
|
|
116
122
|
}
|
|
117
|
-
if ((_c_env = c.env) === null || _c_env === void 0 ? void 0 : _c_env.node.res.headersSent) {
|
|
123
|
+
if ((_c_env = c.env) === null || _c_env === void 0 ? void 0 : (_c_env_node = _c_env.node) === null || _c_env_node === void 0 ? void 0 : (_c_env_node_res = _c_env_node.res) === null || _c_env_node_res === void 0 ? void 0 : _c_env_node_res.headersSent) {
|
|
118
124
|
return void 0;
|
|
119
125
|
}
|
|
120
126
|
if (!c.finalized) {
|
|
@@ -132,7 +138,7 @@ class CustomServer {
|
|
|
132
138
|
middleware: webExtension
|
|
133
139
|
}
|
|
134
140
|
}, {
|
|
135
|
-
onLast: () =>
|
|
141
|
+
onLast: () => []
|
|
136
142
|
});
|
|
137
143
|
}
|
|
138
144
|
}
|
|
@@ -144,7 +150,41 @@ function isRedirect(headers, code) {
|
|
|
144
150
|
308
|
|
145
151
|
].includes(code || 0) || headers.get("Location");
|
|
146
152
|
}
|
|
153
|
+
function getUnstableMiddlewares(serverMiddleware) {
|
|
154
|
+
return serverMiddleware.map((middleware) => {
|
|
155
|
+
return async (c, next) => {
|
|
156
|
+
const context = createMiddlewareContextFromHono(c);
|
|
157
|
+
return middleware(context, next);
|
|
158
|
+
};
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
function createMiddlewareContextFromHono(c) {
|
|
162
|
+
const loaderContext = (0, import_loader.getLoaderCtx)(c);
|
|
163
|
+
return {
|
|
164
|
+
get request() {
|
|
165
|
+
return c.req.raw;
|
|
166
|
+
},
|
|
167
|
+
get response() {
|
|
168
|
+
return c.res;
|
|
169
|
+
},
|
|
170
|
+
set response(newRes) {
|
|
171
|
+
c.res = newRes;
|
|
172
|
+
},
|
|
173
|
+
get(key) {
|
|
174
|
+
return loaderContext.get(key);
|
|
175
|
+
},
|
|
176
|
+
set(key, value) {
|
|
177
|
+
return loaderContext.set(key, value);
|
|
178
|
+
},
|
|
179
|
+
status: c.status.bind(c),
|
|
180
|
+
header: c.header.bind(c),
|
|
181
|
+
body: c.body.bind(c),
|
|
182
|
+
html: c.html.bind(c),
|
|
183
|
+
redirect: c.redirect.bind(c)
|
|
184
|
+
};
|
|
185
|
+
}
|
|
147
186
|
// Annotate the CommonJS export names for ESM import in node:
|
|
148
187
|
0 && (module.exports = {
|
|
149
|
-
CustomServer
|
|
188
|
+
CustomServer,
|
|
189
|
+
getLoaderCtx
|
|
150
190
|
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var loader_exports = {};
|
|
20
|
+
__export(loader_exports, {
|
|
21
|
+
getLoaderCtx: () => getLoaderCtx
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(loader_exports);
|
|
24
|
+
function getLoaderCtx(c) {
|
|
25
|
+
const loaderContext = c.get("loaderContext");
|
|
26
|
+
if (loaderContext) {
|
|
27
|
+
return loaderContext;
|
|
28
|
+
} else {
|
|
29
|
+
const loaderContext2 = /* @__PURE__ */ new Map();
|
|
30
|
+
c.set("loaderContext", loaderContext2);
|
|
31
|
+
return loaderContext2;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
35
|
+
0 && (module.exports = {
|
|
36
|
+
getLoaderCtx
|
|
37
|
+
});
|
|
@@ -3,6 +3,10 @@ var __defProp = Object.defineProperty;
|
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
6
10
|
var __copyProps = (to, from, except, desc) => {
|
|
7
11
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
12
|
for (let key of __getOwnPropNames(from))
|
|
@@ -14,14 +18,19 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
14
18
|
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
19
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
20
|
var middlewares_exports = {};
|
|
21
|
+
__export(middlewares_exports, {
|
|
22
|
+
getLoaderCtx: () => import_customServer.getLoaderCtx
|
|
23
|
+
});
|
|
17
24
|
module.exports = __toCommonJS(middlewares_exports);
|
|
18
25
|
__reExport(middlewares_exports, require("./faviconFallback"), module.exports);
|
|
19
26
|
__reExport(middlewares_exports, require("./monitor"), module.exports);
|
|
20
27
|
__reExport(middlewares_exports, require("./renderHandler"), module.exports);
|
|
21
28
|
__reExport(middlewares_exports, require("./logger"), module.exports);
|
|
22
29
|
__reExport(middlewares_exports, require("./frameworkHeader"), module.exports);
|
|
30
|
+
var import_customServer = require("./customServer");
|
|
23
31
|
// Annotate the CommonJS export names for ESM import in node:
|
|
24
32
|
0 && (module.exports = {
|
|
33
|
+
getLoaderCtx,
|
|
25
34
|
...require("./faviconFallback"),
|
|
26
35
|
...require("./monitor"),
|
|
27
36
|
...require("./renderHandler"),
|
|
@@ -45,6 +45,7 @@ function createRenderHandler(render) {
|
|
|
45
45
|
const serverManifest = c.get("serverManifest") || {};
|
|
46
46
|
const locals = c.get("locals");
|
|
47
47
|
const metrics = c.get("metrics");
|
|
48
|
+
const loaderContext = (0, import_customServer.getLoaderCtx)(c);
|
|
48
49
|
const request = c.req.raw;
|
|
49
50
|
const nodeReq = (_c_env_node = c.env.node) === null || _c_env_node === void 0 ? void 0 : _c_env_node.req;
|
|
50
51
|
const res = await render(request, {
|
|
@@ -54,6 +55,7 @@ function createRenderHandler(render) {
|
|
|
54
55
|
templates,
|
|
55
56
|
metrics,
|
|
56
57
|
serverManifest,
|
|
58
|
+
loaderContext,
|
|
57
59
|
locals
|
|
58
60
|
});
|
|
59
61
|
const { body, status, headers } = res;
|
|
@@ -108,8 +110,14 @@ async function bindRenderHandler(server, options) {
|
|
|
108
110
|
const customServerHookMiddleware = customServer.getHookMiddleware(entryName || "main", routes);
|
|
109
111
|
server.use(urlPath, (0, import_monitor.initReporter)(entryName));
|
|
110
112
|
!disableCustomHook && server.use(urlPath, customServerHookMiddleware);
|
|
111
|
-
const customServerMiddleware = customServer.getServerMiddleware();
|
|
112
|
-
|
|
113
|
+
const customServerMiddleware = await customServer.getServerMiddleware();
|
|
114
|
+
if (customServerMiddleware) {
|
|
115
|
+
if (Array.isArray(customServerMiddleware)) {
|
|
116
|
+
server.use(urlPath, ...customServerMiddleware);
|
|
117
|
+
} else {
|
|
118
|
+
server.use(urlPath, customServerMiddleware);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
113
121
|
render && server.all(urlPath, createRenderHandler(render));
|
|
114
122
|
}
|
|
115
123
|
}
|
|
@@ -23,8 +23,8 @@ __export(render_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(render_exports);
|
|
24
24
|
var import_universal = require("@modern-js/utils/universal");
|
|
25
25
|
var import_trie_router = require("hono/router/trie-router");
|
|
26
|
-
var import_constants = require("../../../base/constants");
|
|
27
26
|
var import_utils = require("../../utils");
|
|
27
|
+
var import_constants = require("../../../base/constants");
|
|
28
28
|
var import_dataHandler = require("./dataHandler");
|
|
29
29
|
var import_ssrRender = require("./ssrRender");
|
|
30
30
|
function getRouter(routes) {
|
|
@@ -45,7 +45,7 @@ function matchRoute(router, request) {
|
|
|
45
45
|
}
|
|
46
46
|
async function createRender({ routes, pwd, metaName, staticGenerate, forceCSR, nonce, onFallback: onFallbackFn }) {
|
|
47
47
|
const router = getRouter(routes);
|
|
48
|
-
return async (req, { logger, nodeReq, reporter, templates, serverManifest, locals, metrics }) => {
|
|
48
|
+
return async (req, { logger, nodeReq, reporter, templates, serverManifest, locals, metrics, loaderContext }) => {
|
|
49
49
|
const [routeInfo, params] = matchRoute(router, req);
|
|
50
50
|
const onFallback = async (reason, error) => {
|
|
51
51
|
return onFallbackFn === null || onFallbackFn === void 0 ? void 0 : onFallbackFn(reason, {
|
|
@@ -90,7 +90,8 @@ async function createRender({ routes, pwd, metaName, staticGenerate, forceCSR, n
|
|
|
90
90
|
params,
|
|
91
91
|
locals,
|
|
92
92
|
serverManifest,
|
|
93
|
-
metrics
|
|
93
|
+
metrics,
|
|
94
|
+
loaderContext: loaderContext || /* @__PURE__ */ new Map()
|
|
94
95
|
};
|
|
95
96
|
switch (renderMode) {
|
|
96
97
|
case "data":
|
|
@@ -35,8 +35,8 @@ module.exports = __toCommonJS(ssrCache_exports);
|
|
|
35
35
|
var import_stream = require("stream");
|
|
36
36
|
var import_utils = require("@modern-js/utils");
|
|
37
37
|
var import_storer = require("@modern-js/runtime-utils/storer");
|
|
38
|
-
var import_stream2 = require("../../adapters/node/polyfills/stream");
|
|
39
38
|
var import_utils2 = require("../../utils");
|
|
39
|
+
var import_stream2 = require("../../adapters/node/polyfills/stream");
|
|
40
40
|
class CacheManager {
|
|
41
41
|
async getCacheResult(req, cacheControl, render, ssrContext) {
|
|
42
42
|
const key = this.computedKey(req, cacheControl);
|
|
@@ -49,7 +49,7 @@ const defaultReporter = {
|
|
|
49
49
|
reportWarn() {
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
|
-
async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, params, metrics }) {
|
|
52
|
+
async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, params, metrics, loaderContext }) {
|
|
53
53
|
var _serverManifest_renderBundles;
|
|
54
54
|
const { entryName } = routeInfo;
|
|
55
55
|
const loadableStats = serverManifest.loadableStats || {};
|
|
@@ -88,6 +88,7 @@ async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, meta
|
|
|
88
88
|
redirection: {},
|
|
89
89
|
template: html,
|
|
90
90
|
loadableStats,
|
|
91
|
+
loaderContext,
|
|
91
92
|
routeManifest,
|
|
92
93
|
entryName,
|
|
93
94
|
staticGenerate,
|
|
@@ -16,19 +16,19 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
16
16
|
var utils_exports = {};
|
|
17
17
|
module.exports = __toCommonJS(utils_exports);
|
|
18
18
|
__reExport(utils_exports, require("./env"), module.exports);
|
|
19
|
-
__reExport(utils_exports, require("./request"), module.exports);
|
|
20
19
|
__reExport(utils_exports, require("./transformStream"), module.exports);
|
|
21
20
|
__reExport(utils_exports, require("./middlewareCollector"), module.exports);
|
|
22
21
|
__reExport(utils_exports, require("./error"), module.exports);
|
|
23
22
|
__reExport(utils_exports, require("./warmup"), module.exports);
|
|
24
23
|
__reExport(utils_exports, require("./entry"), module.exports);
|
|
24
|
+
__reExport(utils_exports, require("./request"), module.exports);
|
|
25
25
|
// Annotate the CommonJS export names for ESM import in node:
|
|
26
26
|
0 && (module.exports = {
|
|
27
27
|
...require("./env"),
|
|
28
|
-
...require("./request"),
|
|
29
28
|
...require("./transformStream"),
|
|
30
29
|
...require("./middlewareCollector"),
|
|
31
30
|
...require("./error"),
|
|
32
31
|
...require("./warmup"),
|
|
33
|
-
...require("./entry")
|
|
32
|
+
...require("./entry"),
|
|
33
|
+
...require("./request")
|
|
34
34
|
});
|
|
@@ -20,18 +20,19 @@ var request_exports = {};
|
|
|
20
20
|
__export(request_exports, {
|
|
21
21
|
getHost: () => getHost,
|
|
22
22
|
getPathname: () => getPathname,
|
|
23
|
+
parseCookie: () => parseCookie,
|
|
23
24
|
parseHeaders: () => parseHeaders,
|
|
24
25
|
parseQuery: () => parseQuery
|
|
25
26
|
});
|
|
26
27
|
module.exports = __toCommonJS(request_exports);
|
|
27
|
-
function parseQuery(
|
|
28
|
-
const { url } = request;
|
|
29
|
-
const q = url.split("?")[1];
|
|
28
|
+
function parseQuery(req) {
|
|
30
29
|
const query = {};
|
|
30
|
+
const { url } = req;
|
|
31
|
+
const q = url.split("?")[1];
|
|
31
32
|
if (q) {
|
|
32
|
-
q
|
|
33
|
-
|
|
34
|
-
query[
|
|
33
|
+
const search = new URLSearchParams(q);
|
|
34
|
+
search.forEach((v, k) => {
|
|
35
|
+
query[k] = v;
|
|
35
36
|
});
|
|
36
37
|
}
|
|
37
38
|
return query;
|
|
@@ -56,10 +57,22 @@ function getHost(request) {
|
|
|
56
57
|
host = (host === null || host === void 0 ? void 0 : host.split(/\s*,\s*/, 1)[0]) || "undefined";
|
|
57
58
|
return host;
|
|
58
59
|
}
|
|
60
|
+
function parseCookie(req) {
|
|
61
|
+
const _cookie = req.headers.get("Cookie");
|
|
62
|
+
const cookie = {};
|
|
63
|
+
_cookie === null || _cookie === void 0 ? void 0 : _cookie.trim().split(";").forEach((item) => {
|
|
64
|
+
const [k, v] = item.trim().split("=");
|
|
65
|
+
if (k) {
|
|
66
|
+
cookie[k] = v;
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return cookie;
|
|
70
|
+
}
|
|
59
71
|
// Annotate the CommonJS export names for ESM import in node:
|
|
60
72
|
0 && (module.exports = {
|
|
61
73
|
getHost,
|
|
62
74
|
getPathname,
|
|
75
|
+
parseCookie,
|
|
63
76
|
parseHeaders,
|
|
64
77
|
parseQuery
|
|
65
78
|
});
|
package/dist/esm/base/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createErrorHtml, onError, ErrorDigest } from "./utils";
|
|
2
2
|
import { AGGRED_DIR } from "./constants";
|
|
3
|
-
import { favionFallbackMiddleware, injectReporter, injectLogger, getRenderHandler, bindRenderHandler, logHandler, processedBy } from "./middlewares";
|
|
3
|
+
import { favionFallbackMiddleware, injectReporter, injectLogger, getRenderHandler, bindRenderHandler, logHandler, processedBy, getLoaderCtx } from "./middlewares";
|
|
4
4
|
import { createServerBase } from "./serverBase";
|
|
5
5
|
export {
|
|
6
6
|
AGGRED_DIR,
|
|
@@ -9,6 +9,7 @@ export {
|
|
|
9
9
|
createErrorHtml,
|
|
10
10
|
createServerBase,
|
|
11
11
|
favionFallbackMiddleware,
|
|
12
|
+
getLoaderCtx,
|
|
12
13
|
getRenderHandler,
|
|
13
14
|
injectLogger,
|
|
14
15
|
injectReporter,
|
|
@@ -4,8 +4,10 @@ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
|
4
4
|
import { time } from "@modern-js/runtime-utils/time";
|
|
5
5
|
import { transformResponse } from "../../utils";
|
|
6
6
|
import { ServerReportTimings } from "../../constants";
|
|
7
|
+
import { getLoaderCtx } from "./loader";
|
|
7
8
|
import { getAfterMatchCtx, getAfterRenderCtx, createCustomMiddlewaresCtx, createAfterStreamingRenderContext } from "./context";
|
|
8
9
|
import { createBaseHookContext } from "./base";
|
|
10
|
+
import { getLoaderCtx as getLoaderCtx2 } from "./loader";
|
|
9
11
|
var noop = function() {
|
|
10
12
|
};
|
|
11
13
|
var isHtmlResponse = function(response) {
|
|
@@ -26,7 +28,7 @@ var CustomServer = /* @__PURE__ */ function() {
|
|
|
26
28
|
}
|
|
27
29
|
}, {
|
|
28
30
|
onLast: function() {
|
|
29
|
-
return
|
|
31
|
+
return [];
|
|
30
32
|
}
|
|
31
33
|
});
|
|
32
34
|
}
|
|
@@ -159,68 +161,84 @@ var CustomServer = /* @__PURE__ */ function() {
|
|
|
159
161
|
};
|
|
160
162
|
_proto.getServerMiddleware = function getServerMiddleware() {
|
|
161
163
|
var _this = this;
|
|
162
|
-
return function() {
|
|
163
|
-
var
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
164
|
+
return _async_to_generator(function() {
|
|
165
|
+
var serverMiddleware;
|
|
166
|
+
return _ts_generator(this, function(_state) {
|
|
167
|
+
switch (_state.label) {
|
|
168
|
+
case 0:
|
|
169
|
+
return [
|
|
170
|
+
4,
|
|
171
|
+
_this.serverMiddlewarePromise
|
|
172
|
+
];
|
|
173
|
+
case 1:
|
|
174
|
+
serverMiddleware = _state.sent();
|
|
175
|
+
if (!serverMiddleware) {
|
|
168
176
|
return [
|
|
169
|
-
|
|
170
|
-
_this.serverMiddlewarePromise
|
|
177
|
+
2
|
|
171
178
|
];
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
if (!serverMiddleware) {
|
|
175
|
-
return [
|
|
176
|
-
2,
|
|
177
|
-
next()
|
|
178
|
-
];
|
|
179
|
-
}
|
|
180
|
-
reporter = c.get("reporter");
|
|
181
|
-
locals = {};
|
|
182
|
-
resArgs = {
|
|
183
|
-
headers: new Headers()
|
|
184
|
-
};
|
|
185
|
-
customMiddlewareCtx = createCustomMiddlewaresCtx(c, locals, resArgs);
|
|
186
|
-
getCost = time();
|
|
179
|
+
}
|
|
180
|
+
if (Array.isArray(serverMiddleware)) {
|
|
187
181
|
return [
|
|
188
|
-
|
|
189
|
-
serverMiddleware
|
|
182
|
+
2,
|
|
183
|
+
getUnstableMiddlewares(serverMiddleware)
|
|
190
184
|
];
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
185
|
+
}
|
|
186
|
+
return [
|
|
187
|
+
2,
|
|
188
|
+
function() {
|
|
189
|
+
var _ref = _async_to_generator(function(c, next) {
|
|
190
|
+
var _c_env_node_res, _c_env_node, _c_env, reporter, locals, resArgs, customMiddlewareCtx, getCost, cost;
|
|
191
|
+
return _ts_generator(this, function(_state2) {
|
|
192
|
+
switch (_state2.label) {
|
|
193
|
+
case 0:
|
|
194
|
+
reporter = c.get("reporter");
|
|
195
|
+
locals = {};
|
|
196
|
+
resArgs = {
|
|
197
|
+
headers: new Headers()
|
|
198
|
+
};
|
|
199
|
+
customMiddlewareCtx = createCustomMiddlewaresCtx(c, locals, resArgs);
|
|
200
|
+
getCost = time();
|
|
201
|
+
return [
|
|
202
|
+
4,
|
|
203
|
+
serverMiddleware(customMiddlewareCtx)
|
|
204
|
+
];
|
|
205
|
+
case 1:
|
|
206
|
+
_state2.sent();
|
|
207
|
+
cost = getCost();
|
|
208
|
+
cost && (reporter === null || reporter === void 0 ? void 0 : reporter.reportTiming(ServerReportTimings.SERVER_MIDDLEWARE, cost));
|
|
209
|
+
c.set("locals", locals);
|
|
210
|
+
if (isRedirect(resArgs.headers, resArgs.status)) {
|
|
211
|
+
return [
|
|
212
|
+
2,
|
|
213
|
+
c.redirect(resArgs.headers.get("Location") || "", resArgs.status || 302)
|
|
214
|
+
];
|
|
215
|
+
}
|
|
216
|
+
if ((_c_env = c.env) === null || _c_env === void 0 ? void 0 : (_c_env_node = _c_env.node) === null || _c_env_node === void 0 ? void 0 : (_c_env_node_res = _c_env_node.res) === null || _c_env_node_res === void 0 ? void 0 : _c_env_node_res.headersSent) {
|
|
217
|
+
return [
|
|
218
|
+
2,
|
|
219
|
+
void 0
|
|
220
|
+
];
|
|
221
|
+
}
|
|
222
|
+
if (!c.finalized) {
|
|
223
|
+
return [
|
|
224
|
+
2,
|
|
225
|
+
next()
|
|
226
|
+
];
|
|
227
|
+
}
|
|
228
|
+
return [
|
|
229
|
+
2
|
|
230
|
+
];
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
return function(c, next) {
|
|
235
|
+
return _ref.apply(this, arguments);
|
|
236
|
+
};
|
|
237
|
+
}()
|
|
238
|
+
];
|
|
239
|
+
}
|
|
219
240
|
});
|
|
220
|
-
|
|
221
|
-
return _ref.apply(this, arguments);
|
|
222
|
-
};
|
|
223
|
-
}();
|
|
241
|
+
})();
|
|
224
242
|
};
|
|
225
243
|
return CustomServer2;
|
|
226
244
|
}();
|
|
@@ -232,6 +250,51 @@ function isRedirect(headers, code) {
|
|
|
232
250
|
308
|
|
233
251
|
].includes(code || 0) || headers.get("Location");
|
|
234
252
|
}
|
|
253
|
+
function getUnstableMiddlewares(serverMiddleware) {
|
|
254
|
+
return serverMiddleware.map(function(middleware) {
|
|
255
|
+
return function() {
|
|
256
|
+
var _ref = _async_to_generator(function(c, next) {
|
|
257
|
+
var context;
|
|
258
|
+
return _ts_generator(this, function(_state) {
|
|
259
|
+
context = createMiddlewareContextFromHono(c);
|
|
260
|
+
return [
|
|
261
|
+
2,
|
|
262
|
+
middleware(context, next)
|
|
263
|
+
];
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
return function(c, next) {
|
|
267
|
+
return _ref.apply(this, arguments);
|
|
268
|
+
};
|
|
269
|
+
}();
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
function createMiddlewareContextFromHono(c) {
|
|
273
|
+
var loaderContext = getLoaderCtx(c);
|
|
274
|
+
return {
|
|
275
|
+
get request() {
|
|
276
|
+
return c.req.raw;
|
|
277
|
+
},
|
|
278
|
+
get response() {
|
|
279
|
+
return c.res;
|
|
280
|
+
},
|
|
281
|
+
set response(newRes) {
|
|
282
|
+
c.res = newRes;
|
|
283
|
+
},
|
|
284
|
+
get: function get(key) {
|
|
285
|
+
return loaderContext.get(key);
|
|
286
|
+
},
|
|
287
|
+
set: function set(key, value) {
|
|
288
|
+
return loaderContext.set(key, value);
|
|
289
|
+
},
|
|
290
|
+
status: c.status.bind(c),
|
|
291
|
+
header: c.header.bind(c),
|
|
292
|
+
body: c.body.bind(c),
|
|
293
|
+
html: c.html.bind(c),
|
|
294
|
+
redirect: c.redirect.bind(c)
|
|
295
|
+
};
|
|
296
|
+
}
|
|
235
297
|
export {
|
|
236
|
-
CustomServer
|
|
298
|
+
CustomServer,
|
|
299
|
+
getLoaderCtx2 as getLoaderCtx
|
|
237
300
|
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
function getLoaderCtx(c) {
|
|
2
|
+
var loaderContext = c.get("loaderContext");
|
|
3
|
+
if (loaderContext) {
|
|
4
|
+
return loaderContext;
|
|
5
|
+
} else {
|
|
6
|
+
var loaderContext1 = /* @__PURE__ */ new Map();
|
|
7
|
+
c.set("loaderContext", loaderContext1);
|
|
8
|
+
return loaderContext1;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export {
|
|
12
|
+
getLoaderCtx
|
|
13
|
+
};
|