@modern-js/server 1.1.5-beta.1 → 1.2.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/CHANGELOG.md +20 -0
- package/dist/js/modern/libs/render/index.js +2 -6
- package/dist/js/modern/libs/render/ssr.js +1 -2
- package/dist/js/modern/server/modern-server.js +2 -10
- package/dist/js/node/libs/render/index.js +2 -6
- package/dist/js/node/libs/render/ssr.js +1 -2
- package/dist/js/node/server/modern-server.js +2 -10
- package/dist/types/libs/render/index.d.ts +1 -10
- package/dist/types/libs/render/ssr.d.ts +1 -2
- package/dist/types/libs/render/type.d.ts +21 -2
- package/package.json +7 -6
- package/src/libs/render/index.ts +11 -21
- package/src/libs/render/ssr.ts +0 -4
- package/src/libs/render/type.ts +15 -2
- package/src/server/modern-server.ts +2 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @modern-js/server
|
|
2
2
|
|
|
3
|
+
## 1.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 5a4c557e: feat: support bff test
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- e04914ce: add route types, fix metrics types
|
|
12
|
+
- e04914ce: add route types, fix metrics types
|
|
13
|
+
- Updated dependencies [90eeb72c]
|
|
14
|
+
- Updated dependencies [e04914ce]
|
|
15
|
+
- Updated dependencies [5a4c557e]
|
|
16
|
+
- Updated dependencies [e04914ce]
|
|
17
|
+
- Updated dependencies [ca7dcb32]
|
|
18
|
+
- Updated dependencies [ecb344dc]
|
|
19
|
+
- @modern-js/core@1.2.0
|
|
20
|
+
- @modern-js/server-plugin@1.1.3
|
|
21
|
+
- @modern-js/utils@1.1.5
|
|
22
|
+
|
|
3
23
|
## 1.1.4
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
|
@@ -9,11 +9,7 @@ import { ERROR_DIGEST } from "../../constants";
|
|
|
9
9
|
export const createRenderHandler = ({
|
|
10
10
|
distDir,
|
|
11
11
|
staticGenerate
|
|
12
|
-
}) => async function render({
|
|
13
|
-
ctx,
|
|
14
|
-
route,
|
|
15
|
-
runner
|
|
16
|
-
}) {
|
|
12
|
+
}) => async function render(ctx, route) {
|
|
17
13
|
if (ctx.resHasHandled()) {
|
|
18
14
|
return null;
|
|
19
15
|
}
|
|
@@ -43,7 +39,7 @@ export const createRenderHandler = ({
|
|
|
43
39
|
bundle: route.bundle,
|
|
44
40
|
template: templateHTML,
|
|
45
41
|
staticGenerate
|
|
46
|
-
}
|
|
42
|
+
});
|
|
47
43
|
return result;
|
|
48
44
|
} catch (err) {
|
|
49
45
|
ctx.error(ERROR_DIGEST.ERENDER, err.stack);
|
|
@@ -2,7 +2,7 @@ import path from 'path';
|
|
|
2
2
|
import { SERVER_RENDER_FUNCTION_NAME } from '@modern-js/utils';
|
|
3
3
|
import mime from 'mime-types';
|
|
4
4
|
import cache from "./cache";
|
|
5
|
-
export const render = async (ctx, renderOptions
|
|
5
|
+
export const render = async (ctx, renderOptions) => {
|
|
6
6
|
const {
|
|
7
7
|
bundle,
|
|
8
8
|
distDir,
|
|
@@ -27,7 +27,6 @@ export const render = async (ctx, renderOptions, runner) => {
|
|
|
27
27
|
logger: ctx.logger,
|
|
28
28
|
metrics: ctx.metrics
|
|
29
29
|
};
|
|
30
|
-
runner.extendSSRContext(context);
|
|
31
30
|
|
|
32
31
|
const serverRender = require(bundleJS)[SERVER_RENDER_FUNCTION_NAME];
|
|
33
32
|
|
|
@@ -313,11 +313,7 @@ export class ModernServer {
|
|
|
313
313
|
}
|
|
314
314
|
|
|
315
315
|
async handleWeb(context, route) {
|
|
316
|
-
return this.routeRenderHandler(
|
|
317
|
-
ctx: context,
|
|
318
|
-
route,
|
|
319
|
-
runner: this.runner
|
|
320
|
-
});
|
|
316
|
+
return this.routeRenderHandler(context, route);
|
|
321
317
|
}
|
|
322
318
|
|
|
323
319
|
verifyMatch(_c, _m) {// empty
|
|
@@ -559,11 +555,7 @@ export class ModernServer {
|
|
|
559
555
|
|
|
560
556
|
if (entryName === status.toString() || entryName === '_error') {
|
|
561
557
|
try {
|
|
562
|
-
const file = await this.routeRenderHandler(
|
|
563
|
-
route,
|
|
564
|
-
ctx: context,
|
|
565
|
-
runner: this.runner
|
|
566
|
-
});
|
|
558
|
+
const file = await this.routeRenderHandler(context, route);
|
|
567
559
|
|
|
568
560
|
if (file) {
|
|
569
561
|
context.res.end(file.content);
|
|
@@ -30,11 +30,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
30
30
|
const createRenderHandler = ({
|
|
31
31
|
distDir,
|
|
32
32
|
staticGenerate
|
|
33
|
-
}) => async function render({
|
|
34
|
-
ctx,
|
|
35
|
-
route,
|
|
36
|
-
runner
|
|
37
|
-
}) {
|
|
33
|
+
}) => async function render(ctx, route) {
|
|
38
34
|
if (ctx.resHasHandled()) {
|
|
39
35
|
return null;
|
|
40
36
|
}
|
|
@@ -67,7 +63,7 @@ const createRenderHandler = ({
|
|
|
67
63
|
bundle: route.bundle,
|
|
68
64
|
template: templateHTML,
|
|
69
65
|
staticGenerate
|
|
70
|
-
}
|
|
66
|
+
});
|
|
71
67
|
return result;
|
|
72
68
|
} catch (err) {
|
|
73
69
|
ctx.error(_constants.ERROR_DIGEST.ERENDER, err.stack);
|
|
@@ -15,7 +15,7 @@ var _cache = _interopRequireDefault(require("./cache"));
|
|
|
15
15
|
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
|
|
18
|
-
const render = async (ctx, renderOptions
|
|
18
|
+
const render = async (ctx, renderOptions) => {
|
|
19
19
|
const {
|
|
20
20
|
bundle,
|
|
21
21
|
distDir,
|
|
@@ -42,7 +42,6 @@ const render = async (ctx, renderOptions, runner) => {
|
|
|
42
42
|
logger: ctx.logger,
|
|
43
43
|
metrics: ctx.metrics
|
|
44
44
|
};
|
|
45
|
-
runner.extendSSRContext(context);
|
|
46
45
|
|
|
47
46
|
const serverRender = require(bundleJS)[_utils.SERVER_RENDER_FUNCTION_NAME];
|
|
48
47
|
|
|
@@ -348,11 +348,7 @@ class ModernServer {
|
|
|
348
348
|
}
|
|
349
349
|
|
|
350
350
|
async handleWeb(context, route) {
|
|
351
|
-
return this.routeRenderHandler(
|
|
352
|
-
ctx: context,
|
|
353
|
-
route,
|
|
354
|
-
runner: this.runner
|
|
355
|
-
});
|
|
351
|
+
return this.routeRenderHandler(context, route);
|
|
356
352
|
}
|
|
357
353
|
|
|
358
354
|
verifyMatch(_c, _m) {// empty
|
|
@@ -594,11 +590,7 @@ class ModernServer {
|
|
|
594
590
|
|
|
595
591
|
if (entryName === status.toString() || entryName === '_error') {
|
|
596
592
|
try {
|
|
597
|
-
const file = await this.routeRenderHandler(
|
|
598
|
-
route,
|
|
599
|
-
ctx: context,
|
|
600
|
-
runner: this.runner
|
|
601
|
-
});
|
|
593
|
+
const file = await this.routeRenderHandler(context, route);
|
|
602
594
|
|
|
603
595
|
if (file) {
|
|
604
596
|
context.res.end(file.content);
|
|
@@ -1,19 +1,10 @@
|
|
|
1
1
|
import { RenderResult } from '../../type';
|
|
2
2
|
import { ModernRoute } from '../route';
|
|
3
3
|
import { ModernServerContext } from '../context';
|
|
4
|
-
import { ServerHookRunner } from "../../type.d";
|
|
5
4
|
export declare const createRenderHandler: ({
|
|
6
5
|
distDir,
|
|
7
6
|
staticGenerate
|
|
8
7
|
}: {
|
|
9
8
|
distDir: string;
|
|
10
9
|
staticGenerate: boolean;
|
|
11
|
-
}) => (
|
|
12
|
-
ctx,
|
|
13
|
-
route,
|
|
14
|
-
runner
|
|
15
|
-
}: {
|
|
16
|
-
ctx: ModernServerContext;
|
|
17
|
-
route: ModernRoute;
|
|
18
|
-
runner: ServerHookRunner;
|
|
19
|
-
}) => Promise<RenderResult | null>;
|
|
10
|
+
}) => (ctx: ModernServerContext, route: ModernRoute) => Promise<RenderResult | null>;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { ModernServerContext } from '../context';
|
|
2
2
|
import { RenderResult } from '../../type';
|
|
3
|
-
import { ServerHookRunner } from "../../type.d";
|
|
4
3
|
export declare const render: (ctx: ModernServerContext, renderOptions: {
|
|
5
4
|
distDir: string;
|
|
6
5
|
bundle: string;
|
|
7
6
|
template: string;
|
|
8
7
|
entryName: string;
|
|
9
8
|
staticGenerate: boolean;
|
|
10
|
-
}
|
|
9
|
+
}) => Promise<RenderResult>;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
3
|
+
import { IncomingHttpHeaders } from 'http';
|
|
4
|
+
import { Metrics, Logger } from '../../type';
|
|
3
5
|
declare type MetaKeyMap = {
|
|
4
6
|
header?: string[];
|
|
5
7
|
query?: string[];
|
|
@@ -22,7 +24,24 @@ export declare enum RenderLevel {
|
|
|
22
24
|
SERVER_PREFETCH = 1,
|
|
23
25
|
SERVER_RENDER = 2,
|
|
24
26
|
}
|
|
25
|
-
export declare type SSRServerContext =
|
|
27
|
+
export declare type SSRServerContext = {
|
|
28
|
+
request: {
|
|
29
|
+
params: Record<string, string>;
|
|
30
|
+
pathname: string;
|
|
31
|
+
query: Record<string, string>;
|
|
32
|
+
headers: IncomingHttpHeaders;
|
|
33
|
+
cookie?: string;
|
|
34
|
+
};
|
|
35
|
+
redirection: {
|
|
36
|
+
url?: string;
|
|
37
|
+
status?: number;
|
|
38
|
+
};
|
|
39
|
+
distDir: string;
|
|
40
|
+
template: string;
|
|
41
|
+
entryName: string;
|
|
42
|
+
logger: Logger;
|
|
43
|
+
metrics?: Metrics;
|
|
44
|
+
loadableManifest?: string;
|
|
26
45
|
cacheConfig?: CacheConfig;
|
|
27
46
|
staticGenerate?: boolean;
|
|
28
47
|
};
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"modern",
|
|
12
12
|
"modern.js"
|
|
13
13
|
],
|
|
14
|
-
"version": "1.
|
|
14
|
+
"version": "1.2.0",
|
|
15
15
|
"jsnext:source": "./src/index.ts",
|
|
16
16
|
"types": "./dist/types/index.d.ts",
|
|
17
17
|
"main": "./dist/js/node/index.js",
|
|
@@ -33,12 +33,12 @@
|
|
|
33
33
|
"@babel/preset-typescript": "^7.15.0",
|
|
34
34
|
"@babel/register": "^7.15.3",
|
|
35
35
|
"@babel/runtime": "^7",
|
|
36
|
-
"@modern-js/core": "^1.
|
|
36
|
+
"@modern-js/core": "^1.2.0",
|
|
37
37
|
"@modern-js/hmr-client": "^1.1.1",
|
|
38
|
-
"@modern-js/server-plugin": "^1.1.
|
|
38
|
+
"@modern-js/server-plugin": "^1.1.3",
|
|
39
39
|
"@modern-js/server-utils": "^1.1.2",
|
|
40
40
|
"@modern-js/bff-utils": "^1.1.1",
|
|
41
|
-
"@modern-js/utils": "^1.1.
|
|
41
|
+
"@modern-js/utils": "^1.1.5",
|
|
42
42
|
"axios": "^0.21.4",
|
|
43
43
|
"babel-plugin-module-resolver": "^4.1.0",
|
|
44
44
|
"chokidar": "^3.5.2",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@modern-js/module-tools": "^1.1.2",
|
|
65
65
|
"@modern-js/plugin-testing": "^1.1.1",
|
|
66
|
-
"@modern-js/types": "^1.1.
|
|
66
|
+
"@modern-js/types": "^1.1.4",
|
|
67
67
|
"@types/jest": "^26",
|
|
68
68
|
"@types/lru-cache": "^5.1.1",
|
|
69
69
|
"@types/mime-types": "^2.1.0",
|
|
@@ -98,5 +98,6 @@
|
|
|
98
98
|
"build": "modern build",
|
|
99
99
|
"dev": "modern build --watch",
|
|
100
100
|
"test": "modern test --passWithNoTests"
|
|
101
|
-
}
|
|
101
|
+
},
|
|
102
|
+
"readme": "\n<p align=\"center\">\n <a href=\"https://modernjs.dev\" target=\"blank\"><img src=\"https://lf3-static.bytednsdoc.com/obj/eden-cn/ylaelkeh7nuhfnuhf/modernjs-cover.png\" width=\"300\" alt=\"Modern.js Logo\" /></a>\n</p>\n<p align=\"center\">\n现代 Web 工程体系\n <br/>\n <a href=\"https://modernjs.dev\" target=\"blank\">\n modernjs.dev\n </a>\n</p>\n<p align=\"center\">\n The meta-framework suite designed from scratch for frontend-focused modern web development\n</p>\n\n# Introduction\n\n> The doc site ([modernjs.dev](https://modernjs.dev)) and articles are only available in Chinese for now, we are planning to add English versions soon.\n\n- [Modern.js: Hello, World!](https://zhuanlan.zhihu.com/p/426707646)\n\n## Getting Started\n\n- [Quick Start](https://modernjs.dev/docs/start)\n- [Guides](https://modernjs.dev/docs/guides)\n- [API References](https://modernjs.dev/docs/apis)\n\n## Contributing\n\n- [Contributing Guide](https://github.com/modern-js-dev/modern.js/blob/main/CONTRIBUTING.md)\n"
|
|
102
103
|
}
|
package/src/libs/render/index.ts
CHANGED
|
@@ -9,7 +9,6 @@ import { readFile } from './reader';
|
|
|
9
9
|
import * as ssr from './ssr';
|
|
10
10
|
import { supportModern, getModernEntry } from './modern';
|
|
11
11
|
import { ERROR_DIGEST } from '@/constants';
|
|
12
|
-
import { ServerHookRunner } from '@/type';
|
|
13
12
|
|
|
14
13
|
export const createRenderHandler = ({
|
|
15
14
|
distDir,
|
|
@@ -18,15 +17,10 @@ export const createRenderHandler = ({
|
|
|
18
17
|
distDir: string;
|
|
19
18
|
staticGenerate: boolean;
|
|
20
19
|
}) =>
|
|
21
|
-
async function render(
|
|
22
|
-
ctx,
|
|
23
|
-
route,
|
|
24
|
-
|
|
25
|
-
}: {
|
|
26
|
-
ctx: ModernServerContext;
|
|
27
|
-
route: ModernRoute;
|
|
28
|
-
runner: ServerHookRunner;
|
|
29
|
-
}): Promise<RenderResult | null> {
|
|
20
|
+
async function render(
|
|
21
|
+
ctx: ModernServerContext,
|
|
22
|
+
route: ModernRoute,
|
|
23
|
+
): Promise<RenderResult | null> {
|
|
30
24
|
if (ctx.resHasHandled()) {
|
|
31
25
|
return null;
|
|
32
26
|
}
|
|
@@ -49,17 +43,13 @@ export const createRenderHandler = ({
|
|
|
49
43
|
// handles ssr first
|
|
50
44
|
if (route.isSSR) {
|
|
51
45
|
try {
|
|
52
|
-
const result = await ssr.render(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
staticGenerate,
|
|
60
|
-
},
|
|
61
|
-
runner,
|
|
62
|
-
);
|
|
46
|
+
const result = await ssr.render(ctx, {
|
|
47
|
+
distDir,
|
|
48
|
+
entryName: route.entryName,
|
|
49
|
+
bundle: route.bundle,
|
|
50
|
+
template: templateHTML,
|
|
51
|
+
staticGenerate,
|
|
52
|
+
});
|
|
63
53
|
return result;
|
|
64
54
|
} catch (err) {
|
|
65
55
|
ctx.error(ERROR_DIGEST.ERENDER, (err as Error).stack);
|
package/src/libs/render/ssr.ts
CHANGED
|
@@ -5,7 +5,6 @@ import { ModernServerContext } from '../context';
|
|
|
5
5
|
import { RenderResult } from '../../type';
|
|
6
6
|
import cache from './cache';
|
|
7
7
|
import { SSRServerContext } from './type';
|
|
8
|
-
import { ServerHookRunner } from '@/type';
|
|
9
8
|
|
|
10
9
|
export const render = async (
|
|
11
10
|
ctx: ModernServerContext,
|
|
@@ -16,7 +15,6 @@ export const render = async (
|
|
|
16
15
|
entryName: string;
|
|
17
16
|
staticGenerate: boolean;
|
|
18
17
|
},
|
|
19
|
-
runner: ServerHookRunner,
|
|
20
18
|
): Promise<RenderResult> => {
|
|
21
19
|
const { bundle, distDir, template, entryName, staticGenerate } =
|
|
22
20
|
renderOptions;
|
|
@@ -39,8 +37,6 @@ export const render = async (
|
|
|
39
37
|
metrics: ctx.metrics,
|
|
40
38
|
};
|
|
41
39
|
|
|
42
|
-
runner.extendSSRContext(context);
|
|
43
|
-
|
|
44
40
|
const serverRender = require(bundleJS)[SERVER_RENDER_FUNCTION_NAME];
|
|
45
41
|
|
|
46
42
|
const html = await cache(serverRender, ctx)(context);
|
package/src/libs/render/type.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { IncomingHttpHeaders } from 'http';
|
|
2
|
-
import { BaseSSRServerContext } from '@modern-js/types/server';
|
|
3
2
|
import { Metrics, Logger } from '../../type';
|
|
4
3
|
|
|
5
4
|
type MetaKeyMap = {
|
|
@@ -27,7 +26,21 @@ export enum RenderLevel {
|
|
|
27
26
|
SERVER_RENDER,
|
|
28
27
|
}
|
|
29
28
|
|
|
30
|
-
export type SSRServerContext =
|
|
29
|
+
export type SSRServerContext = {
|
|
30
|
+
request: {
|
|
31
|
+
params: Record<string, string>;
|
|
32
|
+
pathname: string;
|
|
33
|
+
query: Record<string, string>;
|
|
34
|
+
headers: IncomingHttpHeaders;
|
|
35
|
+
cookie?: string;
|
|
36
|
+
};
|
|
37
|
+
redirection: { url?: string; status?: number };
|
|
38
|
+
distDir: string;
|
|
39
|
+
template: string;
|
|
40
|
+
entryName: string;
|
|
41
|
+
logger: Logger;
|
|
42
|
+
metrics?: Metrics;
|
|
43
|
+
loadableManifest?: string;
|
|
31
44
|
cacheConfig?: CacheConfig;
|
|
32
45
|
staticGenerate?: boolean;
|
|
33
46
|
};
|
|
@@ -356,11 +356,7 @@ export class ModernServer {
|
|
|
356
356
|
}
|
|
357
357
|
|
|
358
358
|
protected async handleWeb(context: ModernServerContext, route: ModernRoute) {
|
|
359
|
-
return this.routeRenderHandler(
|
|
360
|
-
ctx: context,
|
|
361
|
-
route,
|
|
362
|
-
runner: this.runner,
|
|
363
|
-
});
|
|
359
|
+
return this.routeRenderHandler(context, route);
|
|
364
360
|
}
|
|
365
361
|
|
|
366
362
|
protected verifyMatch(_c: ModernServerContext, _m: RouteMatcher) {
|
|
@@ -584,11 +580,7 @@ export class ModernServer {
|
|
|
584
580
|
// check entryName, aviod matched '/' route
|
|
585
581
|
if (entryName === status.toString() || entryName === '_error') {
|
|
586
582
|
try {
|
|
587
|
-
const file = await this.routeRenderHandler(
|
|
588
|
-
route,
|
|
589
|
-
ctx: context,
|
|
590
|
-
runner: this.runner,
|
|
591
|
-
});
|
|
583
|
+
const file = await this.routeRenderHandler(context, route);
|
|
592
584
|
if (file) {
|
|
593
585
|
context.res.end(file.content);
|
|
594
586
|
return;
|