@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 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
- }, runner);
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, runner) => {
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
- }, runner);
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, runner) => {
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
- }, runner: ServerHookRunner) => Promise<RenderResult>;
9
+ }) => Promise<RenderResult>;
@@ -1,5 +1,7 @@
1
+ /// <reference types="node" />
1
2
  /// <reference types="react" />
2
- import { BaseSSRServerContext } from '@modern-js/types/server';
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 = BaseSSRServerContext & {
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.1.5-beta.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.1.4",
36
+ "@modern-js/core": "^1.2.0",
37
37
  "@modern-js/hmr-client": "^1.1.1",
38
- "@modern-js/server-plugin": "^1.1.2",
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.4",
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.3",
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
  }
@@ -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
- runner,
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
- ctx,
54
- {
55
- distDir,
56
- entryName: route.entryName,
57
- bundle: route.bundle,
58
- template: templateHTML,
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);
@@ -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);
@@ -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 = BaseSSRServerContext & {
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;