@modern-js/server-core 2.53.0 → 2.54.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/adapters/node/helper/index.js +37 -0
- package/dist/cjs/{base/adapters/node/middlewares/templates.js → adapters/node/helper/loadCache.js} +19 -33
- package/dist/cjs/{base/utils/serverConfig.js → adapters/node/helper/loadConfig.js} +26 -31
- package/dist/cjs/{base/adapters/node/loadServer.js → adapters/node/helper/loadEnv.js} +3 -3
- package/dist/cjs/{base/utils/debug.js → adapters/node/helper/loadPlugin.js} +16 -6
- package/dist/cjs/{base/adapters → adapters}/node/index.js +17 -16
- package/dist/cjs/{core → adapters/node/plugins}/index.js +8 -4
- package/dist/cjs/{base/middlewares/frameworkHeader.js → adapters/node/plugins/nodeServer.js} +16 -9
- package/dist/cjs/{base/adapters/node/middlewares/serverManifest.js → adapters/node/plugins/resource.js} +56 -5
- package/dist/cjs/{base/adapters/node/middlewares/serverStatic.js → adapters/node/plugins/static.js} +61 -7
- package/dist/cjs/{base/constants.js → constants.js} +3 -0
- package/dist/cjs/index.js +28 -6
- package/dist/cjs/pluginManager.js +106 -0
- package/dist/cjs/{base/middlewares → plugins}/customServer/index.js +13 -11
- package/dist/cjs/plugins/favicon.js +44 -0
- package/dist/cjs/{base/middlewares → plugins}/index.js +21 -15
- package/dist/cjs/{base/middlewares/logger.js → plugins/log.js} +23 -5
- package/dist/cjs/{base/middlewares → plugins}/monitor.js +30 -33
- package/dist/cjs/plugins/processedBy.js +44 -0
- package/dist/cjs/plugins/render/index.js +136 -0
- package/dist/cjs/{base/middlewares/renderHandler → plugins/render}/render.js +20 -5
- package/dist/cjs/plugins/render/ssrCache.js +178 -0
- package/dist/cjs/{base/middlewares/renderHandler → plugins/render}/ssrRender.js +13 -13
- package/dist/cjs/serverBase.js +178 -0
- package/dist/cjs/{base/adapters/node/middlewares → types}/index.js +10 -10
- package/dist/cjs/types/plugin.js +16 -0
- package/dist/cjs/{base/utils → utils}/index.js +3 -1
- package/dist/cjs/{base/middlewares/faviconFallback.js → utils/serverConfig.js} +12 -11
- package/dist/esm/adapters/node/helper/index.js +10 -0
- package/dist/esm/adapters/node/helper/loadCache.js +19 -0
- package/dist/esm/adapters/node/helper/loadConfig.js +32 -0
- package/dist/esm/adapters/node/helper/loadPlugin.js +17 -0
- package/dist/{esm-node/base → esm}/adapters/node/index.js +8 -8
- package/dist/esm/adapters/node/plugins/index.js +3 -0
- package/dist/esm/adapters/node/plugins/nodeServer.js +18 -0
- package/dist/esm/{base/adapters/node/middlewares/serverManifest.js → adapters/node/plugins/resource.js} +139 -1
- package/dist/esm/{base/adapters/node/middlewares/serverStatic.js → adapters/node/plugins/static.js} +108 -2
- package/dist/esm/{base/constants.js → constants.js} +2 -0
- package/dist/esm/index.js +15 -3
- package/dist/esm/pluginManager.js +140 -0
- package/dist/esm/{base/middlewares → plugins}/customServer/index.js +12 -11
- package/dist/esm/plugins/favicon.js +34 -0
- package/dist/esm/plugins/index.js +15 -0
- package/dist/esm/{base/middlewares/logger.js → plugins/log.js} +33 -2
- package/dist/esm/plugins/monitor.js +120 -0
- package/dist/esm/plugins/processedBy.js +42 -0
- package/dist/esm/plugins/render/index.js +229 -0
- package/dist/esm/{base/middlewares/renderHandler → plugins/render}/render.js +20 -7
- package/dist/esm/plugins/render/ssrCache.js +266 -0
- package/dist/esm/{base/middlewares/renderHandler → plugins/render}/ssrRender.js +26 -45
- package/dist/esm/serverBase.js +250 -0
- package/dist/esm/types/index.js +4 -0
- package/dist/esm/types/render.js +0 -0
- package/dist/esm/types/server.js +0 -0
- package/dist/esm/{base/utils → utils}/index.js +1 -0
- package/dist/esm/utils/serverConfig.js +13 -0
- package/dist/esm-node/adapters/node/helper/index.js +10 -0
- package/dist/esm-node/adapters/node/helper/loadCache.js +19 -0
- package/dist/esm-node/adapters/node/helper/loadConfig.js +31 -0
- package/dist/esm-node/adapters/node/helper/loadPlugin.js +15 -0
- package/dist/{esm/base → esm-node}/adapters/node/index.js +8 -8
- package/dist/esm-node/adapters/node/plugins/index.js +3 -0
- package/dist/esm-node/adapters/node/plugins/nodeServer.js +14 -0
- package/dist/esm-node/{base/adapters/node/middlewares/serverManifest.js → adapters/node/plugins/resource.js} +49 -1
- package/dist/esm-node/{base/adapters/node/middlewares/serverStatic.js → adapters/node/plugins/static.js} +54 -2
- package/dist/esm-node/{base/constants.js → constants.js} +2 -0
- package/dist/esm-node/index.js +15 -3
- package/dist/esm-node/pluginManager.js +82 -0
- package/dist/esm-node/{base/middlewares → plugins}/customServer/index.js +11 -10
- package/dist/esm-node/plugins/favicon.js +20 -0
- package/dist/esm-node/plugins/index.js +15 -0
- package/dist/esm-node/{base/middlewares/logger.js → plugins/log.js} +19 -1
- package/dist/esm-node/plugins/monitor.js +62 -0
- package/dist/esm-node/plugins/processedBy.js +20 -0
- package/dist/esm-node/plugins/render/index.js +111 -0
- package/dist/esm-node/{base/middlewares/renderHandler → plugins/render}/render.js +20 -5
- package/dist/esm-node/plugins/render/ssrCache.js +143 -0
- package/dist/esm-node/{base/middlewares/renderHandler → plugins/render}/ssrRender.js +14 -14
- package/dist/esm-node/serverBase.js +153 -0
- package/dist/esm-node/types/index.js +4 -0
- package/dist/esm-node/{base/utils → utils}/index.js +1 -0
- package/dist/esm-node/utils/serverConfig.js +11 -0
- package/dist/types/adapters/node/helper/index.d.ts +4 -0
- package/dist/types/adapters/node/helper/loadCache.d.ts +2 -0
- package/dist/types/adapters/node/helper/loadConfig.d.ts +2 -0
- package/dist/types/{base/adapters/node/loadServer.d.ts → adapters/node/helper/loadEnv.d.ts} +1 -1
- package/dist/types/adapters/node/helper/loadPlugin.d.ts +3 -0
- package/dist/types/{base/adapters → adapters}/node/hono.d.ts +1 -2
- package/dist/types/{base/adapters → adapters}/node/index.d.ts +2 -3
- package/dist/types/{base/adapters → adapters}/node/node.d.ts +1 -2
- package/dist/types/adapters/node/plugins/index.d.ts +3 -0
- package/dist/types/adapters/node/plugins/nodeServer.d.ts +4 -0
- package/dist/types/adapters/node/plugins/resource.d.ts +7 -0
- package/dist/types/adapters/node/plugins/static.d.ts +15 -0
- package/dist/types/{base/constants.d.ts → constants.d.ts} +1 -0
- package/dist/types/index.d.ts +9 -3
- package/dist/types/pluginManager.d.ts +31 -0
- package/dist/types/{base/middlewares → plugins}/customServer/base.d.ts +1 -1
- package/dist/types/{base/middlewares → plugins}/customServer/context.d.ts +1 -1
- package/dist/types/{base/middlewares → plugins}/customServer/index.d.ts +3 -3
- package/dist/types/{base/middlewares → plugins}/customServer/loader.d.ts +1 -1
- package/dist/types/plugins/favicon.d.ts +2 -0
- package/dist/types/plugins/index.d.ts +6 -0
- package/dist/types/plugins/log.d.ts +2 -0
- package/dist/types/plugins/monitor.d.ts +9 -0
- package/dist/types/plugins/processedBy.d.ts +2 -0
- package/dist/types/plugins/render/index.d.ts +16 -0
- package/dist/types/{base/middlewares/renderHandler → plugins/render}/render.d.ts +5 -4
- package/dist/types/plugins/render/ssrCache.d.ts +19 -0
- package/dist/types/{base/middlewares/renderHandler → plugins/render}/ssrRender.d.ts +3 -2
- package/dist/types/{base/serverBase.d.ts → serverBase.d.ts} +13 -30
- package/dist/types/types/config/index.d.ts +1 -0
- package/dist/types/types/config/server.d.ts +1 -0
- package/dist/types/types/index.d.ts +4 -0
- package/dist/types/types/plugin.d.ts +134 -0
- package/dist/types/{base/utils → utils}/index.d.ts +1 -0
- package/dist/types/utils/serverConfig.d.ts +8 -0
- package/package.json +15 -31
- package/dist/cjs/base/adapters/node/bff.js +0 -70
- package/dist/cjs/base/adapters/node/middlewares/mock.js +0 -113
- package/dist/cjs/base/adapters/node/middlewares/serverPublic.js +0 -70
- package/dist/cjs/base/index.js +0 -55
- package/dist/cjs/base/middlewares/renderHandler/index.js +0 -129
- package/dist/cjs/base/middlewares/renderHandler/ssrCache.js +0 -207
- package/dist/cjs/base/serverBase.js +0 -203
- package/dist/cjs/core/loadPlugins.js +0 -50
- package/dist/cjs/core/plugin.js +0 -84
- package/dist/esm/base/adapters/node/bff.js +0 -128
- package/dist/esm/base/adapters/node/middlewares/index.js +0 -4
- package/dist/esm/base/adapters/node/middlewares/mock.js +0 -198
- package/dist/esm/base/adapters/node/middlewares/serverPublic.js +0 -90
- package/dist/esm/base/adapters/node/middlewares/templates.js +0 -114
- package/dist/esm/base/index.js +0 -19
- package/dist/esm/base/middlewares/faviconFallback.js +0 -28
- package/dist/esm/base/middlewares/frameworkHeader.js +0 -27
- package/dist/esm/base/middlewares/index.js +0 -9
- package/dist/esm/base/middlewares/monitor.js +0 -157
- package/dist/esm/base/middlewares/renderHandler/index.js +0 -246
- package/dist/esm/base/middlewares/renderHandler/ssrCache.js +0 -317
- package/dist/esm/base/serverBase.js +0 -383
- package/dist/esm/base/utils/debug.js +0 -5
- package/dist/esm/base/utils/serverConfig.js +0 -58
- package/dist/esm/core/index.js +0 -1
- package/dist/esm/core/loadPlugins.js +0 -26
- package/dist/esm/core/plugin.js +0 -61
- package/dist/esm-node/base/adapters/node/bff.js +0 -46
- package/dist/esm-node/base/adapters/node/middlewares/index.js +0 -4
- package/dist/esm-node/base/adapters/node/middlewares/mock.js +0 -79
- package/dist/esm-node/base/adapters/node/middlewares/serverPublic.js +0 -36
- package/dist/esm-node/base/adapters/node/middlewares/templates.js +0 -32
- package/dist/esm-node/base/index.js +0 -19
- package/dist/esm-node/base/middlewares/faviconFallback.js +0 -10
- package/dist/esm-node/base/middlewares/frameworkHeader.js +0 -7
- package/dist/esm-node/base/middlewares/index.js +0 -9
- package/dist/esm-node/base/middlewares/monitor.js +0 -63
- package/dist/esm-node/base/middlewares/renderHandler/index.js +0 -94
- package/dist/esm-node/base/middlewares/renderHandler/ssrCache.js +0 -172
- package/dist/esm-node/base/serverBase.js +0 -168
- package/dist/esm-node/base/utils/debug.js +0 -5
- package/dist/esm-node/base/utils/serverConfig.js +0 -34
- package/dist/esm-node/core/index.js +0 -1
- package/dist/esm-node/core/loadPlugins.js +0 -26
- package/dist/esm-node/core/plugin.js +0 -53
- package/dist/types/base/adapters/node/bff.d.ts +0 -3
- package/dist/types/base/adapters/node/middlewares/index.d.ts +0 -4
- package/dist/types/base/adapters/node/middlewares/mock.d.ts +0 -5
- package/dist/types/base/adapters/node/middlewares/serverManifest.d.ts +0 -4
- package/dist/types/base/adapters/node/middlewares/serverPublic.d.ts +0 -7
- package/dist/types/base/adapters/node/middlewares/serverStatic.d.ts +0 -11
- package/dist/types/base/adapters/node/middlewares/templates.d.ts +0 -4
- package/dist/types/base/index.d.ts +0 -7
- package/dist/types/base/middlewares/faviconFallback.d.ts +0 -2
- package/dist/types/base/middlewares/frameworkHeader.d.ts +0 -2
- package/dist/types/base/middlewares/index.d.ts +0 -6
- package/dist/types/base/middlewares/logger.d.ts +0 -2
- package/dist/types/base/middlewares/monitor.d.ts +0 -6
- package/dist/types/base/middlewares/renderHandler/index.d.ts +0 -9
- package/dist/types/base/middlewares/renderHandler/ssrCache.d.ts +0 -28
- package/dist/types/base/utils/debug.d.ts +0 -1
- package/dist/types/base/utils/serverConfig.d.ts +0 -14
- package/dist/types/core/index.d.ts +0 -1
- package/dist/types/core/loadPlugins.d.ts +0 -3
- package/dist/types/core/plugin.d.ts +0 -251
- package/dist/cjs/{base/adapters → adapters}/node/hono.js +0 -0
- package/dist/cjs/{base/adapters → adapters}/node/node.js +0 -0
- package/dist/cjs/{base/adapters → adapters}/node/polyfills/index.js +0 -0
- package/dist/cjs/{base/adapters → adapters}/node/polyfills/install.js +0 -0
- package/dist/cjs/{base/adapters → adapters}/node/polyfills/stream.js +0 -0
- package/dist/cjs/{base/middlewares → plugins}/customServer/base.js +0 -0
- package/dist/cjs/{base/middlewares → plugins}/customServer/context.js +0 -0
- package/dist/cjs/{base/middlewares → plugins}/customServer/loader.js +0 -0
- package/dist/cjs/{base/middlewares → plugins}/customServer/routerApi.js +0 -0
- package/dist/cjs/{base/middlewares → plugins}/customServer/template.js +0 -0
- package/dist/cjs/{base/middlewares/renderHandler → plugins/render}/dataHandler.js +0 -0
- package/dist/cjs/{base/middlewares/renderHandler → plugins/render}/serverTiming.js +0 -0
- package/dist/cjs/{core → types}/render.js +0 -0
- package/dist/cjs/{core → types}/server.js +0 -0
- package/dist/cjs/{base/utils → utils}/entry.js +0 -0
- package/dist/cjs/{base/utils → utils}/env.js +0 -0
- package/dist/cjs/{base/utils → utils}/error.js +0 -0
- package/dist/cjs/{base/utils → utils}/middlewareCollector.js +0 -0
- package/dist/cjs/{base/utils → utils}/request.js +0 -0
- package/dist/cjs/{base/utils → utils}/transformStream.js +0 -0
- package/dist/cjs/{base/utils → utils}/warmup.js +0 -0
- package/dist/esm/{base/adapters/node/loadServer.js → adapters/node/helper/loadEnv.js} +0 -0
- package/dist/esm/{base/adapters → adapters}/node/hono.js +0 -0
- package/dist/esm/{base/adapters → adapters}/node/node.js +0 -0
- package/dist/esm/{base/adapters → adapters}/node/polyfills/index.js +0 -0
- package/dist/esm/{base/adapters → adapters}/node/polyfills/install.js +0 -0
- package/dist/esm/{base/adapters → adapters}/node/polyfills/stream.js +0 -0
- package/dist/esm/{base/middlewares → plugins}/customServer/base.js +0 -0
- package/dist/esm/{base/middlewares → plugins}/customServer/context.js +0 -0
- package/dist/esm/{base/middlewares → plugins}/customServer/loader.js +0 -0
- package/dist/esm/{base/middlewares → plugins}/customServer/routerApi.js +0 -0
- package/dist/esm/{base/middlewares → plugins}/customServer/template.js +0 -0
- package/dist/esm/{base/middlewares/renderHandler → plugins/render}/dataHandler.js +0 -0
- package/dist/esm/{base/middlewares/renderHandler → plugins/render}/serverTiming.js +0 -0
- package/dist/esm/{core/server.js → types/plugin.js} +0 -0
- package/dist/esm/{base/utils → utils}/entry.js +0 -0
- package/dist/esm/{base/utils → utils}/env.js +0 -0
- package/dist/esm/{base/utils → utils}/error.js +0 -0
- package/dist/esm/{base/utils → utils}/middlewareCollector.js +0 -0
- package/dist/esm/{base/utils → utils}/request.js +0 -0
- package/dist/esm/{base/utils → utils}/transformStream.js +0 -0
- package/dist/esm/{base/utils → utils}/warmup.js +0 -0
- package/dist/esm-node/{base/adapters/node/loadServer.js → adapters/node/helper/loadEnv.js} +0 -0
- package/dist/esm-node/{base/adapters → adapters}/node/hono.js +0 -0
- package/dist/esm-node/{base/adapters → adapters}/node/node.js +0 -0
- package/dist/esm-node/{base/adapters → adapters}/node/polyfills/index.js +0 -0
- package/dist/esm-node/{base/adapters → adapters}/node/polyfills/install.js +0 -0
- package/dist/esm-node/{base/adapters → adapters}/node/polyfills/stream.js +0 -0
- package/dist/esm-node/{base/middlewares → plugins}/customServer/base.js +0 -0
- package/dist/esm-node/{base/middlewares → plugins}/customServer/context.js +0 -0
- package/dist/esm-node/{base/middlewares → plugins}/customServer/loader.js +0 -0
- package/dist/esm-node/{base/middlewares → plugins}/customServer/routerApi.js +0 -0
- package/dist/esm-node/{base/middlewares → plugins}/customServer/template.js +0 -0
- package/dist/esm-node/{base/middlewares/renderHandler → plugins/render}/dataHandler.js +0 -0
- package/dist/esm-node/{base/middlewares/renderHandler → plugins/render}/serverTiming.js +0 -0
- package/dist/esm-node/{core/render.js → types/plugin.js} +0 -0
- package/dist/{esm/core → esm-node/types}/render.js +0 -0
- package/dist/esm-node/{core → types}/server.js +0 -0
- package/dist/esm-node/{base/utils → utils}/entry.js +0 -0
- package/dist/esm-node/{base/utils → utils}/env.js +0 -0
- package/dist/esm-node/{base/utils → utils}/error.js +0 -0
- package/dist/esm-node/{base/utils → utils}/middlewareCollector.js +0 -0
- package/dist/esm-node/{base/utils → utils}/request.js +0 -0
- package/dist/esm-node/{base/utils → utils}/transformStream.js +0 -0
- package/dist/esm-node/{base/utils → utils}/warmup.js +0 -0
- package/dist/types/{base/adapters → adapters}/node/polyfills/index.d.ts +0 -0
- package/dist/types/{base/adapters → adapters}/node/polyfills/install.d.ts +0 -0
- package/dist/types/{base/adapters → adapters}/node/polyfills/stream.d.ts +0 -0
- package/dist/types/{base/middlewares → plugins}/customServer/routerApi.d.ts +0 -0
- package/dist/types/{base/middlewares → plugins}/customServer/template.d.ts +0 -0
- package/dist/types/{base/middlewares/renderHandler → plugins/render}/dataHandler.d.ts +0 -0
- package/dist/types/{base/middlewares/renderHandler → plugins/render}/serverTiming.d.ts +0 -0
- package/dist/types/{core → types}/render.d.ts +0 -0
- package/dist/types/{core → types}/server.d.ts +1 -1
- /package/dist/types/{base/utils → utils}/entry.d.ts +0 -0
- /package/dist/types/{base/utils → utils}/env.d.ts +0 -0
- /package/dist/types/{base/utils → utils}/error.d.ts +0 -0
- /package/dist/types/{base/utils → utils}/middlewareCollector.d.ts +0 -0
- /package/dist/types/{base/utils → utils}/request.d.ts +0 -0
- /package/dist/types/{base/utils → utils}/transformStream.d.ts +0 -0
- /package/dist/types/{base/utils → utils}/warmup.d.ts +0 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
|
|
2
|
+
import { initReporter } from "../monitor";
|
|
3
|
+
import { sortRoutes } from "../../utils";
|
|
4
|
+
import { getLoaderCtx, CustomServer, getServerMidFromUnstableMid } from "../customServer";
|
|
5
|
+
import { createRender } from "./render";
|
|
6
|
+
const renderPlugin = (options = {}) => ({
|
|
7
|
+
name: "@modern-js/plugin-render",
|
|
8
|
+
setup(api) {
|
|
9
|
+
const { staticGenerate, cacheConfig } = options;
|
|
10
|
+
return {
|
|
11
|
+
async prepare() {
|
|
12
|
+
var _config_render, _config_render1;
|
|
13
|
+
const { middlewares, routes, metaName, distDirectory: pwd, serverBase } = api.useAppContext();
|
|
14
|
+
const runner = api.useHookRunners();
|
|
15
|
+
const config = api.useConfigContext();
|
|
16
|
+
if (!routes) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const customServer = new CustomServer(runner, serverBase, pwd);
|
|
20
|
+
const serverMiddleware = ((_config_render = config.render) === null || _config_render === void 0 ? void 0 : _config_render.middleware) && getServerMidFromUnstableMid(config.render.middleware);
|
|
21
|
+
const pageRoutes = getPageRoutes(routes);
|
|
22
|
+
const render = await getRenderHandler({
|
|
23
|
+
pwd,
|
|
24
|
+
routes,
|
|
25
|
+
config,
|
|
26
|
+
metaName,
|
|
27
|
+
cacheConfig: ((_config_render1 = config.render) === null || _config_render1 === void 0 ? void 0 : _config_render1.cache) || cacheConfig,
|
|
28
|
+
staticGenerate
|
|
29
|
+
});
|
|
30
|
+
for (const route of pageRoutes) {
|
|
31
|
+
const { urlPath: originUrlPath, entryName } = route;
|
|
32
|
+
const urlPath = originUrlPath.endsWith("/") ? `${originUrlPath}*` : `${originUrlPath}/*`;
|
|
33
|
+
middlewares.push({
|
|
34
|
+
name: "init-reporter",
|
|
35
|
+
handler: initReporter(entryName || MAIN_ENTRY_NAME)
|
|
36
|
+
});
|
|
37
|
+
const customServerHookMiddleware = customServer.getHookMiddleware(entryName || "main", routes);
|
|
38
|
+
middlewares.push({
|
|
39
|
+
name: "custom-server-hook",
|
|
40
|
+
path: urlPath,
|
|
41
|
+
handler: customServerHookMiddleware
|
|
42
|
+
});
|
|
43
|
+
const customServerMiddleware = serverMiddleware || await customServer.getServerMiddleware();
|
|
44
|
+
customServerMiddleware && middlewares.push({
|
|
45
|
+
name: "custom-server-middleware",
|
|
46
|
+
path: urlPath,
|
|
47
|
+
handler: customServerMiddleware
|
|
48
|
+
});
|
|
49
|
+
middlewares.push({
|
|
50
|
+
name: `render`,
|
|
51
|
+
path: urlPath,
|
|
52
|
+
handler: createRenderHandler(render)
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
function getPageRoutes(routes) {
|
|
60
|
+
return routes.filter((route) => !route.isApi).sort(sortRoutes);
|
|
61
|
+
}
|
|
62
|
+
function createRenderHandler(render) {
|
|
63
|
+
return async (c, _) => {
|
|
64
|
+
var _c_env_node;
|
|
65
|
+
const logger = c.get("logger");
|
|
66
|
+
const reporter = c.get("reporter");
|
|
67
|
+
const templates = c.get("templates") || {};
|
|
68
|
+
const serverManifest = c.get("serverManifest") || {};
|
|
69
|
+
const locals = c.get("locals");
|
|
70
|
+
const metrics = c.get("metrics");
|
|
71
|
+
const loaderContext = getLoaderCtx(c);
|
|
72
|
+
const request = c.req.raw;
|
|
73
|
+
const nodeReq = (_c_env_node = c.env.node) === null || _c_env_node === void 0 ? void 0 : _c_env_node.req;
|
|
74
|
+
const res = await render(request, {
|
|
75
|
+
logger,
|
|
76
|
+
nodeReq,
|
|
77
|
+
reporter,
|
|
78
|
+
templates,
|
|
79
|
+
metrics,
|
|
80
|
+
serverManifest,
|
|
81
|
+
loaderContext,
|
|
82
|
+
locals
|
|
83
|
+
});
|
|
84
|
+
const { body, status, headers } = res;
|
|
85
|
+
const headersData = {};
|
|
86
|
+
headers.forEach((v, k) => {
|
|
87
|
+
headersData[k] = v;
|
|
88
|
+
});
|
|
89
|
+
return c.body(body, status, headersData);
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
async function getRenderHandler({ pwd, routes, config, cacheConfig, metaName, staticGenerate }) {
|
|
93
|
+
var _config_server, _config_security;
|
|
94
|
+
const ssrConfig = (_config_server = config.server) === null || _config_server === void 0 ? void 0 : _config_server.ssr;
|
|
95
|
+
const forceCSR = typeof ssrConfig === "object" ? ssrConfig.forceCSR : false;
|
|
96
|
+
const render = createRender({
|
|
97
|
+
routes,
|
|
98
|
+
pwd,
|
|
99
|
+
// TODO: need static Genrate
|
|
100
|
+
staticGenerate,
|
|
101
|
+
cacheConfig,
|
|
102
|
+
forceCSR,
|
|
103
|
+
nonce: (_config_security = config.security) === null || _config_security === void 0 ? void 0 : _config_security.nonce,
|
|
104
|
+
metaName: metaName || "modern-js"
|
|
105
|
+
});
|
|
106
|
+
return render;
|
|
107
|
+
}
|
|
108
|
+
export {
|
|
109
|
+
getRenderHandler,
|
|
110
|
+
renderPlugin
|
|
111
|
+
};
|
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
import { cutNameByHyphen } from "@modern-js/utils/universal";
|
|
2
2
|
import { TrieRouter } from "hono/router/trie-router";
|
|
3
3
|
import { parseQuery, getPathname, createErrorHtml, sortRoutes, transformResponse, onError as onErrorFn, ErrorDigest } from "../../utils";
|
|
4
|
-
import { REPLACE_REG } from "
|
|
4
|
+
import { REPLACE_REG, X_MODERNJS_RENDER } from "../../constants";
|
|
5
5
|
import { dataHandler } from "./dataHandler";
|
|
6
6
|
import { ssrRender } from "./ssrRender";
|
|
7
|
+
const DYNAMIC_ROUTE_REG = /\/:./;
|
|
7
8
|
function getRouter(routes) {
|
|
8
|
-
const
|
|
9
|
+
const dynamicRoutes = [];
|
|
10
|
+
const normalRoutes = [];
|
|
11
|
+
routes.forEach((route) => {
|
|
12
|
+
if (DYNAMIC_ROUTE_REG.test(route.urlPath)) {
|
|
13
|
+
dynamicRoutes.push(route);
|
|
14
|
+
} else {
|
|
15
|
+
normalRoutes.push(route);
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
const finalRoutes = [
|
|
19
|
+
...normalRoutes.sort(sortRoutes),
|
|
20
|
+
...dynamicRoutes.sort(sortRoutes)
|
|
21
|
+
];
|
|
9
22
|
const router = new TrieRouter();
|
|
10
|
-
for (const route of
|
|
23
|
+
for (const route of finalRoutes) {
|
|
11
24
|
const { urlPath: originUrlPath } = route;
|
|
12
25
|
const urlPath = originUrlPath.endsWith("/") ? `${originUrlPath}*` : `${originUrlPath}/*`;
|
|
13
26
|
router.add("*", urlPath, route);
|
|
@@ -20,7 +33,7 @@ function matchRoute(router, request) {
|
|
|
20
33
|
const result = matched[0][0];
|
|
21
34
|
return result || [];
|
|
22
35
|
}
|
|
23
|
-
async function createRender({ routes, pwd, metaName, staticGenerate, forceCSR, nonce, onFallback: onFallbackFn }) {
|
|
36
|
+
async function createRender({ routes, pwd, metaName, staticGenerate, cacheConfig, forceCSR, nonce, onFallback: onFallbackFn }) {
|
|
24
37
|
const router = getRouter(routes);
|
|
25
38
|
return async (req, { logger, nodeReq, reporter, templates, serverManifest, locals, metrics, loaderContext }) => {
|
|
26
39
|
const [routeInfo, params] = matchRoute(router, req);
|
|
@@ -62,6 +75,7 @@ async function createRender({ routes, pwd, metaName, staticGenerate, forceCSR, n
|
|
|
62
75
|
nonce,
|
|
63
76
|
logger,
|
|
64
77
|
nodeReq,
|
|
78
|
+
cacheConfig,
|
|
65
79
|
reporter,
|
|
66
80
|
serverRoutes: routes,
|
|
67
81
|
params,
|
|
@@ -137,7 +151,8 @@ function csrRender(html) {
|
|
|
137
151
|
return new Response(html, {
|
|
138
152
|
status: 200,
|
|
139
153
|
headers: new Headers({
|
|
140
|
-
"content-type": "text/html; charset=UTF-8"
|
|
154
|
+
"content-type": "text/html; charset=UTF-8",
|
|
155
|
+
[X_MODERNJS_RENDER]: "client"
|
|
141
156
|
})
|
|
142
157
|
});
|
|
143
158
|
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { createMemoryStorage } from "@modern-js/runtime-utils/storer";
|
|
2
|
+
import { createTransformStream, getPathname, getRuntimeEnv } from "../../utils";
|
|
3
|
+
async function processCache(key, render, ssrContext, ttl, container, status) {
|
|
4
|
+
const renderResult = await render(ssrContext);
|
|
5
|
+
if (!renderResult) {
|
|
6
|
+
return {
|
|
7
|
+
data: ""
|
|
8
|
+
};
|
|
9
|
+
} else if (typeof renderResult === "string") {
|
|
10
|
+
const current = Date.now();
|
|
11
|
+
const cache = {
|
|
12
|
+
val: renderResult,
|
|
13
|
+
cursor: current
|
|
14
|
+
};
|
|
15
|
+
await container.set(key, JSON.stringify(cache), {
|
|
16
|
+
ttl
|
|
17
|
+
});
|
|
18
|
+
return {
|
|
19
|
+
data: renderResult,
|
|
20
|
+
status
|
|
21
|
+
};
|
|
22
|
+
} else {
|
|
23
|
+
const { Readable } = await import("stream").catch((_) => ({
|
|
24
|
+
Readable: void 0
|
|
25
|
+
}));
|
|
26
|
+
const runtimeEnv = getRuntimeEnv();
|
|
27
|
+
const streamModule = "../../adapters/node/polyfills/stream";
|
|
28
|
+
const { createReadableStreamFromReadable } = runtimeEnv === "node" ? await import(streamModule).catch((_) => ({
|
|
29
|
+
createReadableStreamFromReadable: void 0
|
|
30
|
+
})) : {
|
|
31
|
+
createReadableStreamFromReadable: void 0
|
|
32
|
+
};
|
|
33
|
+
const body = (
|
|
34
|
+
// TODO: remove node:stream, move it to ssr entry.
|
|
35
|
+
Readable && renderResult instanceof Readable ? createReadableStreamFromReadable === null || createReadableStreamFromReadable === void 0 ? void 0 : createReadableStreamFromReadable(renderResult) : renderResult
|
|
36
|
+
);
|
|
37
|
+
let html = "";
|
|
38
|
+
const stream = createTransformStream((chunk) => {
|
|
39
|
+
html += chunk;
|
|
40
|
+
return chunk;
|
|
41
|
+
});
|
|
42
|
+
const reader = body.getReader();
|
|
43
|
+
const writer = stream.writable.getWriter();
|
|
44
|
+
const push = () => {
|
|
45
|
+
reader.read().then(({ done, value }) => {
|
|
46
|
+
if (done) {
|
|
47
|
+
const current = Date.now();
|
|
48
|
+
const cache = {
|
|
49
|
+
val: html,
|
|
50
|
+
cursor: current
|
|
51
|
+
};
|
|
52
|
+
container.set(key, JSON.stringify(cache), {
|
|
53
|
+
ttl
|
|
54
|
+
});
|
|
55
|
+
writer.close();
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
writer.write(value);
|
|
59
|
+
push();
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
push();
|
|
63
|
+
return {
|
|
64
|
+
data: stream.readable,
|
|
65
|
+
status
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const CACHE_NAMESPACE = "__ssr__cache";
|
|
70
|
+
const storage = createMemoryStorage(CACHE_NAMESPACE);
|
|
71
|
+
function computedKey(req, cacheControl) {
|
|
72
|
+
const pathname = getPathname(req);
|
|
73
|
+
const { customKey } = cacheControl;
|
|
74
|
+
const defaultKey = pathname.replace(/.+\/+$/, "");
|
|
75
|
+
if (customKey) {
|
|
76
|
+
if (typeof customKey === "string") {
|
|
77
|
+
return customKey;
|
|
78
|
+
} else {
|
|
79
|
+
return customKey(defaultKey);
|
|
80
|
+
}
|
|
81
|
+
} else {
|
|
82
|
+
return defaultKey;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function matchCacheControl(cacheOption, req) {
|
|
86
|
+
if (!cacheOption || !req) {
|
|
87
|
+
return void 0;
|
|
88
|
+
} else if (isCacheControl(cacheOption)) {
|
|
89
|
+
return cacheOption;
|
|
90
|
+
} else if (isCacheOptionProvider(cacheOption)) {
|
|
91
|
+
return cacheOption(req);
|
|
92
|
+
} else {
|
|
93
|
+
const url = req.url;
|
|
94
|
+
const options = Object.entries(cacheOption);
|
|
95
|
+
for (const [key, option] of options) {
|
|
96
|
+
if (key === "*" || new RegExp(key).test(url)) {
|
|
97
|
+
if (typeof option === "function") {
|
|
98
|
+
return option(req);
|
|
99
|
+
} else {
|
|
100
|
+
return option;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return void 0;
|
|
105
|
+
}
|
|
106
|
+
function isCacheOptionProvider(option) {
|
|
107
|
+
return typeof option === "function";
|
|
108
|
+
}
|
|
109
|
+
function isCacheControl(option) {
|
|
110
|
+
return typeof option === "object" && option !== null && "maxAge" in option;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
async function getCacheResult(request, options) {
|
|
114
|
+
const { cacheControl, render, ssrContext, container = storage } = options;
|
|
115
|
+
const key = computedKey(request, cacheControl);
|
|
116
|
+
const value = await container.get(key);
|
|
117
|
+
const { maxAge, staleWhileRevalidate } = cacheControl;
|
|
118
|
+
const ttl = maxAge + staleWhileRevalidate;
|
|
119
|
+
if (value) {
|
|
120
|
+
const cache = JSON.parse(value);
|
|
121
|
+
const interval = Date.now() - cache.cursor;
|
|
122
|
+
if (interval <= maxAge) {
|
|
123
|
+
return {
|
|
124
|
+
data: cache.val,
|
|
125
|
+
status: "hit"
|
|
126
|
+
};
|
|
127
|
+
} else if (interval <= staleWhileRevalidate + maxAge) {
|
|
128
|
+
processCache(key, render, ssrContext, ttl, container);
|
|
129
|
+
return {
|
|
130
|
+
data: cache.val,
|
|
131
|
+
status: "stale"
|
|
132
|
+
};
|
|
133
|
+
} else {
|
|
134
|
+
return processCache(key, render, ssrContext, ttl, container, "expired");
|
|
135
|
+
}
|
|
136
|
+
} else {
|
|
137
|
+
return processCache(key, render, ssrContext, ttl, container, "miss");
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
export {
|
|
141
|
+
getCacheResult,
|
|
142
|
+
matchCacheControl
|
|
143
|
+
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { SERVER_RENDER_FUNCTION_NAME, MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
|
|
2
2
|
import * as isbot from "isbot";
|
|
3
3
|
import { getRuntimeEnv, parseHeaders, parseQuery, getHost, getPathname } from "../../utils";
|
|
4
|
-
import { X_RENDER_CACHE } from "../../constants";
|
|
4
|
+
import { X_MODERNJS_RENDER, X_RENDER_CACHE } from "../../constants";
|
|
5
5
|
import { ServerTiming } from "./serverTiming";
|
|
6
|
+
import { matchCacheControl, getCacheResult } from "./ssrCache";
|
|
6
7
|
const defaultReporter = {
|
|
7
8
|
init() {
|
|
8
9
|
},
|
|
@@ -15,7 +16,7 @@ const defaultReporter = {
|
|
|
15
16
|
reportWarn() {
|
|
16
17
|
}
|
|
17
18
|
};
|
|
18
|
-
async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, params, metrics, loaderContext }) {
|
|
19
|
+
async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, params, metrics, loaderContext, cacheConfig }) {
|
|
19
20
|
var _serverManifest_renderBundles;
|
|
20
21
|
const { entryName } = routeInfo;
|
|
21
22
|
const loadableStats = serverManifest.loadableStats || {};
|
|
@@ -77,18 +78,16 @@ async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, meta
|
|
|
77
78
|
let ssrResult;
|
|
78
79
|
let cacheStatus;
|
|
79
80
|
const render = renderBundle[SERVER_RENDER_FUNCTION_NAME];
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
ssrResult = await render(ssrContext);
|
|
91
|
-
}
|
|
81
|
+
const cacheControl = await matchCacheControl(cacheConfig === null || cacheConfig === void 0 ? void 0 : cacheConfig.strategy, nodeReq || new IncomingMessgeProxy(request));
|
|
82
|
+
if (cacheControl) {
|
|
83
|
+
const { data: data2, status } = await getCacheResult(request, {
|
|
84
|
+
cacheControl,
|
|
85
|
+
container: cacheConfig === null || cacheConfig === void 0 ? void 0 : cacheConfig.container,
|
|
86
|
+
render,
|
|
87
|
+
ssrContext
|
|
88
|
+
});
|
|
89
|
+
ssrResult = data2;
|
|
90
|
+
cacheStatus = status;
|
|
92
91
|
} else {
|
|
93
92
|
ssrResult = await render(ssrContext);
|
|
94
93
|
}
|
|
@@ -96,6 +95,7 @@ async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, meta
|
|
|
96
95
|
if (cacheStatus) {
|
|
97
96
|
responseProxy.headers.set(X_RENDER_CACHE, cacheStatus);
|
|
98
97
|
}
|
|
98
|
+
responseProxy.headers.set(X_MODERNJS_RENDER, "server");
|
|
99
99
|
if (redirection.url) {
|
|
100
100
|
const { headers: headers2 } = responseProxy;
|
|
101
101
|
headers2.set("Location", redirection.url);
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { _ as _class_private_method_get } from "@swc/helpers/_/_class_private_method_get";
|
|
2
|
+
import { _ as _class_private_method_init } from "@swc/helpers/_/_class_private_method_init";
|
|
3
|
+
import { Hono } from "hono";
|
|
4
|
+
import { createContext } from "@modern-js/plugin";
|
|
5
|
+
import { PluginManager } from "./pluginManager";
|
|
6
|
+
var _getAppContext = /* @__PURE__ */ new WeakSet(), _applyMiddlewares = /* @__PURE__ */ new WeakSet();
|
|
7
|
+
class ServerBase {
|
|
8
|
+
/**
|
|
9
|
+
* 初始化顺序
|
|
10
|
+
* - 初始化 pluginManager;
|
|
11
|
+
* - 执行 runner.prepare;
|
|
12
|
+
* - 应用 middlewares
|
|
13
|
+
*/
|
|
14
|
+
async init() {
|
|
15
|
+
const runner = await this.pluginManager.init();
|
|
16
|
+
this.runner = runner;
|
|
17
|
+
await runner.prepare();
|
|
18
|
+
_class_private_method_get(this, _applyMiddlewares, applyMiddlewares).call(this);
|
|
19
|
+
return this;
|
|
20
|
+
}
|
|
21
|
+
addPlugins(plugins) {
|
|
22
|
+
this.pluginManager.addPlugins(plugins);
|
|
23
|
+
}
|
|
24
|
+
get all() {
|
|
25
|
+
return this.app.all.bind(this.app);
|
|
26
|
+
}
|
|
27
|
+
get use() {
|
|
28
|
+
return this.app.use.bind(this.app);
|
|
29
|
+
}
|
|
30
|
+
get get() {
|
|
31
|
+
return this.app.get.bind(this.app);
|
|
32
|
+
}
|
|
33
|
+
get post() {
|
|
34
|
+
return this.app.post.bind(this.app);
|
|
35
|
+
}
|
|
36
|
+
get put() {
|
|
37
|
+
return this.app.put.bind(this.app);
|
|
38
|
+
}
|
|
39
|
+
get delete() {
|
|
40
|
+
return this.app.delete.bind(this.app);
|
|
41
|
+
}
|
|
42
|
+
get patch() {
|
|
43
|
+
return this.app.patch.bind(this.app);
|
|
44
|
+
}
|
|
45
|
+
get handle() {
|
|
46
|
+
return this.app.fetch.bind(this.app);
|
|
47
|
+
}
|
|
48
|
+
get request() {
|
|
49
|
+
return this.app.request.bind(this.app);
|
|
50
|
+
}
|
|
51
|
+
get notFound() {
|
|
52
|
+
return this.app.notFound.bind(this.app);
|
|
53
|
+
}
|
|
54
|
+
get onError() {
|
|
55
|
+
return this.app.onError.bind(this.app);
|
|
56
|
+
}
|
|
57
|
+
constructor(options) {
|
|
58
|
+
_class_private_method_init(this, _getAppContext);
|
|
59
|
+
_class_private_method_init(this, _applyMiddlewares);
|
|
60
|
+
this.options = options;
|
|
61
|
+
const { config, serverConfig } = options;
|
|
62
|
+
const appContext = _class_private_method_get(this, _getAppContext, getAppContext).call(this);
|
|
63
|
+
this.appContext = appContext;
|
|
64
|
+
this.pluginManager = new PluginManager({
|
|
65
|
+
cliConfig: config,
|
|
66
|
+
appContext,
|
|
67
|
+
serverConfig
|
|
68
|
+
});
|
|
69
|
+
this.app = new Hono();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function getAppContext() {
|
|
73
|
+
const { appContext: context, pwd, routes, metaName } = this.options;
|
|
74
|
+
const appContext = {
|
|
75
|
+
routes,
|
|
76
|
+
middlewares: [],
|
|
77
|
+
appDirectory: (context === null || context === void 0 ? void 0 : context.appDirectory) || "",
|
|
78
|
+
apiDirectory: context === null || context === void 0 ? void 0 : context.apiDirectory,
|
|
79
|
+
lambdaDirectory: context === null || context === void 0 ? void 0 : context.lambdaDirectory,
|
|
80
|
+
sharedDirectory: (context === null || context === void 0 ? void 0 : context.sharedDirectory) || "",
|
|
81
|
+
distDirectory: pwd,
|
|
82
|
+
plugins: [],
|
|
83
|
+
metaName: metaName || "modern-js",
|
|
84
|
+
serverBase: this
|
|
85
|
+
};
|
|
86
|
+
return createContext(appContext);
|
|
87
|
+
}
|
|
88
|
+
function applyMiddlewares() {
|
|
89
|
+
const { middlewares } = this.appContext.get();
|
|
90
|
+
const preMiddlewares = [];
|
|
91
|
+
const defaultMiddlewares = [];
|
|
92
|
+
const postMiddlewares = [];
|
|
93
|
+
for (const middleware of middlewares) {
|
|
94
|
+
switch (middleware.order) {
|
|
95
|
+
case "pre":
|
|
96
|
+
preMiddlewares.push(middleware);
|
|
97
|
+
break;
|
|
98
|
+
case "post":
|
|
99
|
+
postMiddlewares.push(middleware);
|
|
100
|
+
break;
|
|
101
|
+
default:
|
|
102
|
+
defaultMiddlewares.push(middleware);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const finalMiddlewares = [];
|
|
106
|
+
const insertMiddleware = (middleware) => {
|
|
107
|
+
if (middleware.before) {
|
|
108
|
+
const targetIndex = finalMiddlewares.findIndex((item) => {
|
|
109
|
+
var _middleware_before;
|
|
110
|
+
if ((_middleware_before = middleware.before) === null || _middleware_before === void 0 ? void 0 : _middleware_before.includes(item.name)) {
|
|
111
|
+
return true;
|
|
112
|
+
} else {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
if (targetIndex !== -1) {
|
|
117
|
+
finalMiddlewares.splice(targetIndex, 0, middleware);
|
|
118
|
+
} else {
|
|
119
|
+
finalMiddlewares.push(middleware);
|
|
120
|
+
}
|
|
121
|
+
} else {
|
|
122
|
+
finalMiddlewares.push(middleware);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
preMiddlewares.forEach(insertMiddleware);
|
|
126
|
+
defaultMiddlewares.forEach(insertMiddleware);
|
|
127
|
+
postMiddlewares.forEach(insertMiddleware);
|
|
128
|
+
for (const middleware of finalMiddlewares) {
|
|
129
|
+
const { path = "*", method = "all", handler } = middleware;
|
|
130
|
+
const handlers = handler2Handlers(handler);
|
|
131
|
+
this.app[method](path, ...handlers);
|
|
132
|
+
}
|
|
133
|
+
function handler2Handlers(handler) {
|
|
134
|
+
if (Array.isArray(handler)) {
|
|
135
|
+
return handler;
|
|
136
|
+
} else {
|
|
137
|
+
return [
|
|
138
|
+
handler
|
|
139
|
+
];
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function createServerBase(options) {
|
|
144
|
+
if (options == null) {
|
|
145
|
+
throw new Error("can not start server without options");
|
|
146
|
+
}
|
|
147
|
+
const server = new ServerBase(options);
|
|
148
|
+
return server;
|
|
149
|
+
}
|
|
150
|
+
export {
|
|
151
|
+
ServerBase,
|
|
152
|
+
createServerBase
|
|
153
|
+
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { NodeRequest, NodeResponse } from '
|
|
2
|
-
import { Context, HonoRequest, ServerEnv, Middleware, Next, ServerManifest } from '../../../core/server';
|
|
1
|
+
import { NodeRequest, NodeResponse, Context, HonoRequest, ServerEnv, Middleware, Next, ServerManifest } from '../../types';
|
|
3
2
|
type NodeBindings = {
|
|
4
3
|
node: {
|
|
5
4
|
req: NodeRequest & {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export { loadServerEnv } from './loadServer';
|
|
2
1
|
export { httpCallBack2HonoMid, connectMid2HonoMid } from './hono';
|
|
3
2
|
export type { ServerNodeContext, ServerNodeMiddleware } from './hono';
|
|
4
3
|
export { createNodeServer, sendResponse, createWebRequest, writeReadableStreamToWritable, } from './node';
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
4
|
+
export { serverStaticPlugin, injectResourcePlugin, getHtmlTemplates, getServerManifest, injectNodeSeverPlugin, } from './plugins';
|
|
5
|
+
export { loadServerPlugins, loadServerEnv, loadServerConfig, loadCacheConfig, } from './helper';
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
/// <reference types="node" />
|
|
3
3
|
import { Server as NodeServer } from 'node:http';
|
|
4
4
|
import type { Server as NodeHttpsServer } from 'node:https';
|
|
5
|
-
import { NodeRequest, NodeResponse } from '
|
|
6
|
-
import { RequestHandler } from '../../../core/server';
|
|
5
|
+
import { NodeRequest, NodeResponse, RequestHandler } from '../../types';
|
|
7
6
|
export { writeReadableStreamToWritable } from './polyfills';
|
|
8
7
|
export declare const createWebRequest: (req: NodeRequest, res: NodeResponse, body?: BodyInit) => Request;
|
|
9
8
|
export declare const sendResponse: (response: Response, res: NodeResponse) => Promise<void>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Logger, ServerRoute } from '@modern-js/types';
|
|
2
|
+
import { Middleware, ServerEnv, ServerManifest, ServerPlugin } from '../../../types';
|
|
3
|
+
export declare function getHtmlTemplates(pwd: string, routes: ServerRoute[]): Promise<Record<string, string>>;
|
|
4
|
+
export declare function injectTemplates(pwd: string, routes?: ServerRoute[]): Middleware<ServerEnv>;
|
|
5
|
+
export declare function getServerManifest(pwd: string, routes: ServerRoute[], logger: Logger): Promise<ServerManifest>;
|
|
6
|
+
export declare function injectServerManifest(pwd: string, routes?: ServerRoute[]): Middleware<ServerEnv>;
|
|
7
|
+
export declare const injectResourcePlugin: () => ServerPlugin;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ServerRoute } from '@modern-js/types';
|
|
2
|
+
import type { OutputNormalizedConfig, HtmlNormalizedConfig, Middleware, ServerPlugin } from '../../../types';
|
|
3
|
+
export declare const serverStaticPlugin: () => ServerPlugin;
|
|
4
|
+
export type PublicMiddlwareOptions = {
|
|
5
|
+
pwd: string;
|
|
6
|
+
routes: ServerRoute[];
|
|
7
|
+
};
|
|
8
|
+
export declare function createPublicMiddleware({ pwd, routes, }: PublicMiddlwareOptions): Middleware;
|
|
9
|
+
export interface ServerStaticOptions {
|
|
10
|
+
pwd: string;
|
|
11
|
+
output: OutputNormalizedConfig;
|
|
12
|
+
html: HtmlNormalizedConfig;
|
|
13
|
+
routes?: ServerRoute[];
|
|
14
|
+
}
|
|
15
|
+
export declare function createStaticMiddleware(options: ServerStaticOptions): Middleware;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export { createErrorHtml, onError, ErrorDigest } from './utils';
|
|
2
|
+
export { AGGRED_DIR } from './constants';
|
|
3
|
+
export type { ServerBase, ServerBaseOptions } from './serverBase';
|
|
4
|
+
export { createServerBase } from './serverBase';
|
|
5
|
+
export { PluginManager, type PluginManagerOptions } from './pluginManager';
|
|
6
|
+
export type { Middleware, Context, Next, HonoRequest as InternalRequest, ServerEnv, ServerManifest, } from './types';
|
|
7
|
+
export * from './plugins';
|
|
8
|
+
export * from './types/plugin';
|
|
9
|
+
export * from './types/render';
|
|
3
10
|
export * from '@modern-js/plugin';
|
|
4
|
-
export * from './core/loadPlugins';
|
|
5
11
|
export * from './types/config';
|