@modern-js/server-core 3.0.0-alpha.0 → 3.0.0-alpha.2
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/plugins/resource.js +9 -10
- package/dist/cjs/index.js +18 -10
- package/dist/cjs/plugins/render/render.js +1 -1
- package/dist/esm/adapters/node/helper/index.mjs +5 -5
- package/dist/esm/adapters/node/hono.mjs +1 -1
- package/dist/esm/adapters/node/index.mjs +4 -4
- package/dist/esm/adapters/node/node.mjs +1 -1
- package/dist/esm/adapters/node/plugins/index.mjs +3 -3
- package/dist/esm/adapters/node/plugins/resource.mjs +10 -11
- package/dist/esm/adapters/node/plugins/static.mjs +2 -2
- package/dist/esm/context.mjs +1 -1
- package/dist/esm/index.mjs +12 -12
- package/dist/esm/plugins/compat/index.mjs +1 -1
- package/dist/esm/plugins/default.mjs +6 -6
- package/dist/esm/plugins/index.mjs +8 -8
- package/dist/esm/plugins/log.mjs +1 -1
- package/dist/esm/plugins/monitors.mjs +1 -1
- package/dist/esm/plugins/render/csrRscRender.mjs +1 -1
- package/dist/esm/plugins/render/index.mjs +4 -4
- package/dist/esm/plugins/render/inject.mjs +1 -1
- package/dist/esm/plugins/render/render.mjs +8 -8
- package/dist/esm/plugins/render/renderRscHandler.mjs +1 -1
- package/dist/esm/plugins/render/ssrCache.mjs +2 -2
- package/dist/esm/plugins/render/ssrRender.mjs +4 -4
- package/dist/esm/plugins/route.mjs +1 -1
- package/dist/esm/serverBase.mjs +3 -3
- package/dist/esm/types/config/index.mjs +6 -6
- package/dist/esm/types/index.mjs +4 -4
- package/dist/esm/types/plugins/index.mjs +1 -1
- package/dist/esm/utils/error.mjs +1 -1
- package/dist/esm/utils/index.mjs +9 -9
- package/dist/esm-node/adapters/node/helper/index.mjs +2 -0
- package/dist/esm-node/adapters/node/helper/loadCache.mjs +2 -0
- package/dist/esm-node/adapters/node/helper/loadConfig.mjs +2 -0
- package/dist/esm-node/adapters/node/helper/loadEnv.mjs +2 -0
- package/dist/esm-node/adapters/node/helper/loadPlugin.mjs +2 -0
- package/dist/esm-node/adapters/node/helper/utils.mjs +2 -0
- package/dist/esm-node/adapters/node/hono.mjs +2 -0
- package/dist/esm-node/adapters/node/index.mjs +2 -0
- package/dist/esm-node/adapters/node/node.mjs +2 -0
- package/dist/esm-node/adapters/node/plugins/index.mjs +2 -0
- package/dist/esm-node/adapters/node/plugins/nodeServer.mjs +2 -0
- package/dist/esm-node/adapters/node/plugins/resource.mjs +11 -10
- package/dist/esm-node/adapters/node/plugins/static.mjs +2 -0
- package/dist/esm-node/constants.mjs +2 -0
- package/dist/esm-node/context.mjs +2 -0
- package/dist/esm-node/helper.mjs +2 -0
- package/dist/esm-node/hono.mjs +2 -0
- package/dist/esm-node/index.mjs +4 -2
- package/dist/esm-node/plugins/compat/hooks.mjs +2 -0
- package/dist/esm-node/plugins/compat/index.mjs +2 -0
- package/dist/esm-node/plugins/default.mjs +2 -0
- package/dist/esm-node/plugins/favicon.mjs +2 -0
- package/dist/esm-node/plugins/index.mjs +2 -0
- package/dist/esm-node/plugins/log.mjs +2 -0
- package/dist/esm-node/plugins/middlewares.mjs +2 -0
- package/dist/esm-node/plugins/monitors.mjs +2 -0
- package/dist/esm-node/plugins/processedBy.mjs +2 -0
- package/dist/esm-node/plugins/render/csrRscRender.mjs +2 -0
- package/dist/esm-node/plugins/render/dataHandler.mjs +2 -0
- package/dist/esm-node/plugins/render/index.mjs +2 -0
- package/dist/esm-node/plugins/render/inject.mjs +2 -0
- package/dist/esm-node/plugins/render/render.mjs +3 -1
- package/dist/esm-node/plugins/render/renderRscHandler.mjs +2 -0
- package/dist/esm-node/plugins/render/serverActionHandler.mjs +2 -0
- package/dist/esm-node/plugins/render/ssrCache.mjs +2 -0
- package/dist/esm-node/plugins/render/ssrRender.mjs +2 -0
- package/dist/esm-node/plugins/render/utils.mjs +2 -0
- package/dist/esm-node/plugins/route.mjs +2 -0
- package/dist/esm-node/serverBase.mjs +2 -0
- package/dist/esm-node/types/config/bff.mjs +2 -0
- package/dist/esm-node/types/config/dev.mjs +2 -0
- package/dist/esm-node/types/config/html.mjs +2 -0
- package/dist/esm-node/types/config/index.mjs +2 -0
- package/dist/esm-node/types/config/output.mjs +2 -0
- package/dist/esm-node/types/config/security.mjs +2 -0
- package/dist/esm-node/types/config/server.mjs +2 -0
- package/dist/esm-node/types/config/share.mjs +2 -0
- package/dist/esm-node/types/config/source.mjs +2 -0
- package/dist/esm-node/types/config/tools.mjs +2 -0
- package/dist/esm-node/types/index.mjs +2 -0
- package/dist/esm-node/types/plugins/base.mjs +2 -0
- package/dist/esm-node/types/plugins/index.mjs +2 -0
- package/dist/esm-node/types/plugins/plugin.mjs +2 -0
- package/dist/esm-node/types/render.mjs +2 -0
- package/dist/esm-node/types/requestHandler.mjs +2 -0
- package/dist/esm-node/types/server.mjs +2 -0
- package/dist/esm-node/utils/entry.mjs +2 -0
- package/dist/esm-node/utils/env.mjs +2 -0
- package/dist/esm-node/utils/error.mjs +2 -0
- package/dist/esm-node/utils/index.mjs +2 -0
- package/dist/esm-node/utils/middlewareCollector.mjs +2 -0
- package/dist/esm-node/utils/publicDir.mjs +2 -0
- package/dist/esm-node/utils/request.mjs +2 -0
- package/dist/esm-node/utils/serverConfig.mjs +2 -0
- package/dist/esm-node/utils/storage.mjs +2 -0
- package/dist/esm-node/utils/transformStream.mjs +2 -0
- package/dist/esm-node/utils/warmup.mjs +2 -0
- package/dist/types/adapters/node/plugins/resource.d.ts +3 -3
- package/dist/types/index.d.ts +1 -1
- package/dist/types/types/config/server.d.ts +1 -1
- package/dist/types/types/config/tools.d.ts +1 -7
- package/package.json +22 -13
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import "node:module";
|
|
2
|
+
/*#__PURE__*/ import.meta.url;
|
|
1
3
|
import path from "path";
|
|
2
4
|
import { fileReader } from "@modern-js/runtime-utils/fileReader";
|
|
3
5
|
import { LOADABLE_STATS_FILE, MAIN_ENTRY_NAME, NESTED_ROUTE_SPEC_FILE, ROUTE_MANIFEST_FILE, SERVER_BUNDLE_DIRECTORY, compatibleRequire, fs, isProd } from "@modern-js/utils";
|
|
@@ -27,25 +29,25 @@ function injectTemplates(pwd, routes, htmlTemplatePromise) {
|
|
|
27
29
|
await next();
|
|
28
30
|
};
|
|
29
31
|
}
|
|
30
|
-
const loadBundle = async (filepath,
|
|
32
|
+
const loadBundle = async (filepath, monitors)=>{
|
|
31
33
|
if (!await fs.pathExists(filepath)) return;
|
|
32
34
|
try {
|
|
33
35
|
const module = await compatibleRequire(filepath, false);
|
|
34
36
|
return module;
|
|
35
37
|
} catch (e) {
|
|
36
|
-
|
|
38
|
+
monitors.error(`Load ${filepath} bundle failed, error = %s`, e instanceof Error ? e.stack || e.message : e);
|
|
37
39
|
return;
|
|
38
40
|
}
|
|
39
41
|
};
|
|
40
|
-
async function getServerManifest(pwd, routes,
|
|
42
|
+
async function getServerManifest(pwd, routes, monitors) {
|
|
41
43
|
const loaderBundles = {};
|
|
42
44
|
const renderBundles = {};
|
|
43
45
|
await Promise.all(routes.filter((route)=>Boolean(route.bundle)).map(async (route)=>{
|
|
44
46
|
const entryName = route.entryName || MAIN_ENTRY_NAME;
|
|
45
47
|
const renderBundlePath = path.join(pwd, route.bundle || '');
|
|
46
48
|
const loaderBundlePath = path.join(pwd, SERVER_BUNDLE_DIRECTORY, `${entryName}-server-loaders.js`);
|
|
47
|
-
const renderBundle = await loadBundle(renderBundlePath,
|
|
48
|
-
const loaderBundle = await loadBundle(loaderBundlePath,
|
|
49
|
+
const renderBundle = await loadBundle(renderBundlePath, monitors);
|
|
50
|
+
const loaderBundle = await loadBundle(loaderBundlePath, monitors);
|
|
49
51
|
renderBundle && (renderBundles[entryName] = renderBundle);
|
|
50
52
|
loaderBundle && (loaderBundles[entryName] = loaderBundle?.loadModules ? await loaderBundle?.loadModules() : loaderBundle);
|
|
51
53
|
}));
|
|
@@ -66,8 +68,8 @@ async function getServerManifest(pwd, routes, logger) {
|
|
|
66
68
|
function injectServerManifest(pwd, routes, manifestPromise) {
|
|
67
69
|
return async (c, next)=>{
|
|
68
70
|
if (routes && !c.get('serverManifest')) {
|
|
69
|
-
const
|
|
70
|
-
const serverManifest = await (manifestPromise || getServerManifest(pwd, routes,
|
|
71
|
+
const monitors = c.get('monitors');
|
|
72
|
+
const serverManifest = await (manifestPromise || getServerManifest(pwd, routes, monitors));
|
|
71
73
|
c.set('serverManifest', serverManifest);
|
|
72
74
|
}
|
|
73
75
|
await next();
|
|
@@ -85,13 +87,12 @@ async function getRscSSRManifest(pwd) {
|
|
|
85
87
|
const rscSSRManifest = await compatibleRequire(path.join(pwd, 'react-ssr-manifest.json')).catch((_)=>void 0);
|
|
86
88
|
return rscSSRManifest;
|
|
87
89
|
}
|
|
88
|
-
const injectRscManifestPlugin = ()=>({
|
|
90
|
+
const injectRscManifestPlugin = (enableRsc)=>({
|
|
89
91
|
name: '@modern-js/plugin-inject-rsc-manifest',
|
|
90
92
|
setup (api) {
|
|
91
93
|
api.onPrepare(()=>{
|
|
92
94
|
const { middlewares, distDirectory: pwd } = api.getServerContext();
|
|
93
|
-
|
|
94
|
-
if (!config.server?.rsc) return;
|
|
95
|
+
if (!enableRsc) return;
|
|
95
96
|
middlewares.push({
|
|
96
97
|
name: 'inject-rsc-manifest',
|
|
97
98
|
handler: async (c, next)=>{
|
package/dist/esm-node/helper.mjs
CHANGED
package/dist/esm-node/hono.mjs
CHANGED
package/dist/esm-node/index.mjs
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import "node:module";
|
|
2
|
+
/*#__PURE__*/ import.meta.url;
|
|
1
3
|
import { ErrorDigest, createErrorHtml, onError } from "./utils/index.mjs";
|
|
2
4
|
import { getPublicDirConfig, getPublicDirPatterns, getPublicDirRoutePrefixes, normalizePublicDir, normalizePublicDirPath, resolvePublicDirPaths } from "./utils/publicDir.mjs";
|
|
3
5
|
import { AGGRED_DIR } from "./constants.mjs";
|
|
4
6
|
import { createServerBase } from "./serverBase.mjs";
|
|
5
|
-
import { useHonoContext } from "./context.mjs";
|
|
7
|
+
import { run, useHonoContext } from "./context.mjs";
|
|
6
8
|
import { Hono } from "hono";
|
|
7
9
|
import { getLoaderCtx } from "./helper.mjs";
|
|
8
10
|
export * from "./plugins/index.mjs";
|
|
@@ -10,4 +12,4 @@ export * from "./types/plugins/index.mjs";
|
|
|
10
12
|
export * from "./types/render.mjs";
|
|
11
13
|
export * from "./types/config/index.mjs";
|
|
12
14
|
export * from "./types/requestHandler.mjs";
|
|
13
|
-
export { AGGRED_DIR, ErrorDigest, Hono, createErrorHtml, createServerBase, getLoaderCtx, getPublicDirConfig, getPublicDirPatterns, getPublicDirRoutePrefixes, normalizePublicDir, normalizePublicDirPath, onError, resolvePublicDirPaths, useHonoContext };
|
|
15
|
+
export { AGGRED_DIR, ErrorDigest, Hono, createErrorHtml, createServerBase, getLoaderCtx, getPublicDirConfig, getPublicDirPatterns, getPublicDirRoutePrefixes, normalizePublicDir, normalizePublicDirPath, onError, resolvePublicDirPaths, run, useHonoContext };
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import "node:module";
|
|
2
|
+
/*#__PURE__*/ import.meta.url;
|
|
1
3
|
import { getRenderHandler, injectRenderHandlerPlugin, renderPlugin } from "./render/index.mjs";
|
|
2
4
|
import { faviconPlugin } from "./favicon.mjs";
|
|
3
5
|
import { injectServerTiming, injectloggerPlugin } from "./monitors.mjs";
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import "node:module";
|
|
2
|
+
/*#__PURE__*/ import.meta.url;
|
|
1
3
|
import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
|
|
2
4
|
const dataHandler = async (request, { routeInfo, serverRoutes, monitors, onError, onTiming, serverManifest, loaderContext })=>{
|
|
3
5
|
const serverLoaderModule = serverManifest?.loaderBundles?.[routeInfo.entryName || MAIN_ENTRY_NAME];
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import "node:module";
|
|
2
|
+
/*#__PURE__*/ import.meta.url;
|
|
1
3
|
import * as __rspack_external__modern_js_runtime_utils_router_2aa8d96f from "@modern-js/runtime-utils/router";
|
|
2
4
|
import { cutNameByHyphen } from "@modern-js/utils/universal";
|
|
3
5
|
import { TrieRouter } from "hono/router/trie-router";
|
|
@@ -214,7 +216,7 @@ function injectFallbackReasonToHtml({ html, reason, framework }) {
|
|
|
214
216
|
}
|
|
215
217
|
async function csrRender(request, options) {
|
|
216
218
|
const { html, rscClientManifest } = options;
|
|
217
|
-
if (!rscClientManifest || process.env.MODERN_DISABLE_INJECT_RSC_DATA) return new Response(html, {
|
|
219
|
+
if (!rscClientManifest || process.env.MODERN_DISABLE_INJECT_RSC_DATA || !options.routeInfo.isRSC) return new Response(html, {
|
|
218
220
|
status: 200,
|
|
219
221
|
headers: new Headers({
|
|
220
222
|
'content-type': 'text/html; charset=UTF-8',
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import "node:module";
|
|
2
|
+
/*#__PURE__*/ import.meta.url;
|
|
1
3
|
import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
|
|
2
4
|
const serverActionHandler = async (req, { serverManifest, routeInfo, rscClientManifest })=>{
|
|
3
5
|
const serverBundle = serverManifest?.renderBundles?.[routeInfo.entryName || MAIN_ENTRY_NAME];
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Monitors, ServerRoute } from '@modern-js/types';
|
|
2
2
|
import type { Middleware, ServerEnv, ServerManifest, ServerPlugin } from '../../../types';
|
|
3
3
|
export declare function getHtmlTemplates(pwd: string, routes: ServerRoute[]): Promise<Record<string, string>>;
|
|
4
4
|
export declare function injectTemplates(pwd: string, routes?: ServerRoute[], htmlTemplatePromise?: ReturnType<typeof getHtmlTemplates>): Middleware<ServerEnv>;
|
|
5
|
-
export declare function getServerManifest(pwd: string, routes: ServerRoute[],
|
|
5
|
+
export declare function getServerManifest(pwd: string, routes: ServerRoute[], monitors: Monitors): Promise<ServerManifest>;
|
|
6
6
|
export declare function injectServerManifest(pwd: string, routes?: ServerRoute[], manifestPromise?: Promise<ServerManifest>): Middleware<ServerEnv>;
|
|
7
7
|
export declare function getRscServerManifest(pwd: string): Promise<any>;
|
|
8
8
|
export declare function getClientManifest(pwd: string): Promise<any>;
|
|
9
9
|
export declare function getRscSSRManifest(pwd: string): Promise<any>;
|
|
10
|
-
export declare const injectRscManifestPlugin: () => ServerPlugin;
|
|
10
|
+
export declare const injectRscManifestPlugin: (enableRsc: boolean) => ServerPlugin;
|
|
11
11
|
export declare const injectResourcePlugin: () => ServerPlugin;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { normalizePublicDir, normalizePublicDirPath, getPublicDirRoutePrefixes,
|
|
|
3
3
|
export { AGGRED_DIR } from './constants';
|
|
4
4
|
export type { ServerBase, ServerBaseOptions } from './serverBase';
|
|
5
5
|
export { createServerBase } from './serverBase';
|
|
6
|
-
export { useHonoContext } from './context';
|
|
6
|
+
export { run, useHonoContext } from './context';
|
|
7
7
|
export { Hono } from 'hono';
|
|
8
8
|
export type { Middleware, MiddlewareHandler, Context, Next, HonoRequest as InternalRequest, ServerEnv, ServerManifest, ServerLoaderBundle, } from './types';
|
|
9
9
|
export { getLoaderCtx } from './helper';
|
|
@@ -28,7 +28,7 @@ export interface ServerUserConfig {
|
|
|
28
28
|
baseUrl?: string | string[];
|
|
29
29
|
port?: number;
|
|
30
30
|
watchOptions?: WatchOptions;
|
|
31
|
-
compiler?: '
|
|
31
|
+
compiler?: 'typescript';
|
|
32
32
|
/**
|
|
33
33
|
* @description use json script tag instead of inline script
|
|
34
34
|
* @default false
|
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import type { ConfigChain } from './share';
|
|
3
|
-
type ToolsBabelConfig = ConfigChain<BabelTransformOptions, any>;
|
|
4
|
-
export interface ToolsUserConfig {
|
|
5
|
-
babel?: ToolsBabelConfig;
|
|
6
|
-
}
|
|
1
|
+
export type ToolsUserConfig = Record<string, never>;
|
|
7
2
|
export type ToolsNormalizedConfig = ToolsUserConfig;
|
|
8
|
-
export {};
|
package/package.json
CHANGED
|
@@ -15,25 +15,34 @@
|
|
|
15
15
|
"modern",
|
|
16
16
|
"modern.js"
|
|
17
17
|
],
|
|
18
|
-
"version": "3.0.0-alpha.
|
|
19
|
-
"jsnext:source": "./src/index.ts",
|
|
18
|
+
"version": "3.0.0-alpha.2",
|
|
20
19
|
"types": "./dist/types/index.d.ts",
|
|
21
20
|
"main": "./dist/cjs/index.js",
|
|
22
|
-
"module": "./dist/esm-node/index.mjs",
|
|
23
21
|
"exports": {
|
|
24
22
|
".": {
|
|
25
23
|
"types": "./dist/types/index.d.ts",
|
|
26
|
-
"
|
|
24
|
+
"modern:source": "./src/index.ts",
|
|
25
|
+
"node": {
|
|
26
|
+
"import": "./dist/esm-node/index.mjs",
|
|
27
|
+
"require": "./dist/cjs/index.js"
|
|
28
|
+
},
|
|
27
29
|
"default": "./dist/cjs/index.js"
|
|
28
30
|
},
|
|
29
31
|
"./node": {
|
|
30
32
|
"types": "./dist/types/adapters/node/index.d.ts",
|
|
31
|
-
"
|
|
33
|
+
"modern:source": "./src/adapters/node/index.ts",
|
|
34
|
+
"node": {
|
|
35
|
+
"import": "./dist/esm-node/adapters/node/index.mjs",
|
|
36
|
+
"require": "./dist/cjs/adapters/node/index.js"
|
|
37
|
+
},
|
|
32
38
|
"default": "./dist/cjs/adapters/node/index.js"
|
|
33
39
|
},
|
|
34
40
|
"./hono": {
|
|
35
41
|
"types": "./dist/types/hono.d.ts",
|
|
36
|
-
"
|
|
42
|
+
"node": {
|
|
43
|
+
"import": "./dist/esm-node/hono.mjs",
|
|
44
|
+
"require": "./dist/cjs/hono.js"
|
|
45
|
+
},
|
|
37
46
|
"default": "./dist/cjs/hono.js"
|
|
38
47
|
}
|
|
39
48
|
},
|
|
@@ -60,22 +69,22 @@
|
|
|
60
69
|
"@web-std/stream": "^1.0.3",
|
|
61
70
|
"cloneable-readable": "^3.0.0",
|
|
62
71
|
"flatted": "^3.3.3",
|
|
63
|
-
"hono": "^4.
|
|
72
|
+
"hono": "^4.11.7",
|
|
64
73
|
"ts-deepmerge": "7.0.3",
|
|
65
|
-
"@modern-js/plugin": "3.0.0-alpha.
|
|
66
|
-
"@modern-js/runtime-utils": "3.0.0-alpha.
|
|
67
|
-
"@modern-js/utils": "3.0.0-alpha.
|
|
74
|
+
"@modern-js/plugin": "3.0.0-alpha.2",
|
|
75
|
+
"@modern-js/runtime-utils": "3.0.0-alpha.2",
|
|
76
|
+
"@modern-js/utils": "3.0.0-alpha.2"
|
|
68
77
|
},
|
|
69
78
|
"devDependencies": {
|
|
70
|
-
"@rslib/core": "0.
|
|
79
|
+
"@rslib/core": "0.19.3",
|
|
71
80
|
"@types/cloneable-readable": "^2.0.3",
|
|
72
81
|
"@types/merge-deep": "^3.0.3",
|
|
73
82
|
"@types/node": "^20",
|
|
74
83
|
"http-proxy-middleware": "^2.0.9",
|
|
75
84
|
"typescript": "^5",
|
|
76
|
-
"@modern-js/types": "3.0.0-alpha.0",
|
|
77
85
|
"@modern-js/rslib": "2.68.10",
|
|
78
|
-
"@scripts/rstest-config": "2.66.0"
|
|
86
|
+
"@scripts/rstest-config": "2.66.0",
|
|
87
|
+
"@modern-js/types": "3.0.0-alpha.2"
|
|
79
88
|
},
|
|
80
89
|
"sideEffects": false,
|
|
81
90
|
"publishConfig": {
|