@modern-js/prod-server 2.21.1 → 2.22.1

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.
Files changed (76) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/cjs/constants.js +15 -5
  3. package/dist/cjs/index.js +12 -4
  4. package/dist/cjs/libs/context/context.js +3 -1
  5. package/dist/cjs/libs/context/index.js +6 -2
  6. package/dist/cjs/libs/hook-api/base.js +88 -0
  7. package/dist/cjs/libs/hook-api/index.js +17 -79
  8. package/dist/cjs/libs/hook-api/index.worker.js +109 -0
  9. package/dist/cjs/libs/hook-api/route.js +3 -1
  10. package/dist/cjs/libs/hook-api/template.js +6 -26
  11. package/dist/cjs/libs/hook-api/templateForStream.js +35 -0
  12. package/dist/cjs/libs/loadConfig.js +9 -3
  13. package/dist/cjs/libs/logger.js +6 -2
  14. package/dist/cjs/libs/metrics.js +3 -1
  15. package/dist/cjs/libs/proxy.js +6 -2
  16. package/dist/cjs/libs/render/cache/__tests__/cacheable.js +3 -1
  17. package/dist/cjs/libs/render/cache/__tests__/error-configuration.js +3 -1
  18. package/dist/cjs/libs/render/cache/__tests__/matched-cache.js +3 -1
  19. package/dist/cjs/libs/render/cache/index.js +3 -1
  20. package/dist/cjs/libs/render/cache/page-caches/index.js +3 -1
  21. package/dist/cjs/libs/render/cache/page-caches/lru.js +3 -1
  22. package/dist/cjs/libs/render/cache/spr.js +6 -2
  23. package/dist/cjs/libs/render/cache/util.js +24 -8
  24. package/dist/cjs/libs/render/index.js +3 -4
  25. package/dist/cjs/libs/render/measure.js +6 -2
  26. package/dist/cjs/libs/render/reader.js +32 -19
  27. package/dist/cjs/libs/render/ssr.js +3 -1
  28. package/dist/cjs/libs/render/static.js +3 -1
  29. package/dist/cjs/libs/render/type.js +3 -1
  30. package/dist/cjs/libs/render/utils.js +8 -3
  31. package/dist/cjs/libs/route/index.js +6 -2
  32. package/dist/cjs/libs/route/matcher.js +3 -1
  33. package/dist/cjs/libs/route/route.js +3 -1
  34. package/dist/cjs/libs/serveFile.js +6 -2
  35. package/dist/cjs/renderHtml.js +75 -0
  36. package/dist/cjs/server/index.js +9 -3
  37. package/dist/cjs/server/modernServer.js +21 -16
  38. package/dist/cjs/server/modernServerSplit.js +3 -1
  39. package/dist/cjs/utils.js +27 -9
  40. package/dist/cjs/workerServer.js +90 -9
  41. package/dist/esm/libs/hook-api/base.js +104 -0
  42. package/dist/esm/libs/hook-api/index.js +5 -109
  43. package/dist/esm/libs/hook-api/index.worker.js +105 -0
  44. package/dist/esm/libs/hook-api/template.js +1 -28
  45. package/dist/esm/libs/hook-api/templateForStream.js +28 -0
  46. package/dist/esm/libs/render/index.js +1 -4
  47. package/dist/esm/libs/render/reader.js +26 -26
  48. package/dist/esm/libs/render/utils.js +2 -1
  49. package/dist/esm/renderHtml.js +141 -0
  50. package/dist/esm/server/index.js +11 -1
  51. package/dist/esm/server/modernServer.js +45 -37
  52. package/dist/esm/workerServer.js +98 -8
  53. package/dist/esm-node/libs/hook-api/base.js +68 -0
  54. package/dist/esm-node/libs/hook-api/index.js +5 -74
  55. package/dist/esm-node/libs/hook-api/index.worker.js +84 -0
  56. package/dist/esm-node/libs/hook-api/template.js +1 -25
  57. package/dist/esm-node/libs/hook-api/templateForStream.js +25 -0
  58. package/dist/esm-node/libs/render/index.js +1 -4
  59. package/dist/esm-node/libs/render/reader.js +14 -11
  60. package/dist/esm-node/libs/render/utils.js +2 -1
  61. package/dist/esm-node/renderHtml.js +71 -0
  62. package/dist/esm-node/server/index.js +6 -2
  63. package/dist/esm-node/server/modernServer.js +18 -15
  64. package/dist/esm-node/workerServer.js +84 -7
  65. package/dist/types/libs/context/context.d.ts +1 -1
  66. package/dist/types/libs/hook-api/base.d.ts +53 -0
  67. package/dist/types/libs/hook-api/index.worker.d.ts +18 -0
  68. package/dist/types/libs/hook-api/template.d.ts +11 -14
  69. package/dist/types/libs/hook-api/templateForStream.d.ts +13 -0
  70. package/dist/types/libs/render/reader.d.ts +4 -2
  71. package/dist/types/renderHtml.d.ts +21 -0
  72. package/dist/types/server/index.d.ts +5 -1
  73. package/dist/types/server/modernServer.d.ts +4 -3
  74. package/dist/types/utils.d.ts +1 -1
  75. package/dist/types/workerServer.d.ts +19 -8
  76. package/package.json +21 -7
@@ -1,8 +1,10 @@
1
1
  /// <reference types="node" />
2
+ import type { IFs } from 'memfs';
2
3
  export declare class LruReader {
3
4
  private readonly cache;
5
+ private fs;
4
6
  constructor();
5
- init(): void;
7
+ init(fs?: IFs): void;
6
8
  close(): void;
7
9
  read(filepath: string): Promise<{
8
10
  content: Buffer;
@@ -14,5 +16,5 @@ export declare class LruReader {
14
16
  }
15
17
  export declare const readFile: (filepath: string) => Promise<Buffer | undefined>;
16
18
  export declare const updateFile: () => void;
17
- export declare const init: () => void;
19
+ export declare const init: (fs?: IFs) => void;
18
20
  export declare const close: () => void;
@@ -0,0 +1,21 @@
1
+ /// <reference types="node" />
2
+ import { IncomingHttpHeaders, OutgoingHttpHeaders } from 'http';
3
+ import { ModernServerOptions } from './type';
4
+ export interface RenderHtmlOptions {
5
+ /** request url */
6
+ url: string;
7
+ /** request method */
8
+ method?: string;
9
+ /** request headers */
10
+ headers?: IncomingHttpHeaders;
11
+ /** request body */
12
+ body?: string;
13
+ serverOptions: ModernServerOptions;
14
+ }
15
+ export interface ReturnResponse {
16
+ headers: OutgoingHttpHeaders;
17
+ redirected: boolean;
18
+ status: number;
19
+ url: string;
20
+ body: string;
21
+ }
@@ -26,7 +26,11 @@ export declare class Server {
26
26
  * - 执行 prepare hook
27
27
  * - 执行 server init
28
28
  */
29
- init(): Promise<this>;
29
+ init({
30
+ disableHttpServer
31
+ }?: {
32
+ disableHttpServer: boolean;
33
+ }): Promise<this>;
30
34
  /**
31
35
  * Execute config hooks
32
36
  * @param runner
@@ -42,14 +42,15 @@ export declare class ModernServer implements ModernServerInterface {
42
42
  }: ModernServerOptions);
43
43
  onInit(runner: ServerHookRunner, app: Server): Promise<void>;
44
44
  onRepack(_: BuildOptions): void;
45
+ getRequestHandler(): (req: IncomingMessage, res: ServerResponse, next?: () => void) => void | ServerResponse;
46
+ render(req: IncomingMessage, res: ServerResponse, url?: string): Promise<string | import("stream").Readable | null>;
47
+ createHTTPServer(handler: (req: IncomingMessage, res: ServerResponse, next?: () => void) => void): Promise<Server<typeof IncomingMessage, typeof ServerResponse>>;
48
+ protected initReader(): void;
45
49
  protected onServerChange({
46
50
  filepath
47
51
  }: {
48
52
  filepath: string;
49
53
  }): Promise<void>;
50
- getRequestHandler(): (req: IncomingMessage, res: ServerResponse, next?: () => void) => void | ServerResponse;
51
- render(req: IncomingMessage, res: ServerResponse, url?: string): Promise<string | import("stream").Readable | null>;
52
- createHTTPServer(handler: (req: IncomingMessage, res: ServerResponse, next?: () => void) => void): Promise<Server<typeof IncomingMessage, typeof ServerResponse>>;
53
54
  protected getRoutes(): ServerRoute[];
54
55
  protected addHandler(handler: ModernServerHandler): void;
55
56
  protected render404(context: ModernServerContext): void;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node/http" />
3
- /// <reference types=".dts-temp/tNQNz5diNrmZleL5wsuCm/src/type" />
3
+ /// <reference types=".dts-temp/3ZBk4sVfhWju-jJlzqgTy/src/type" />
4
4
  import { IncomingMessage } from 'http';
5
5
  import type { OutputNormalizedConfig, HtmlNormalizedConfig } from '@modern-js/server-core';
6
6
  export declare const debug: any;
@@ -1,3 +1,4 @@
1
+ import { AfterMatchContext, AfterRenderContext, MiddlewareContext, NextFunction } from '@modern-js/types';
1
2
  import { ModernRouteInterface } from './libs/route';
2
3
  export type Context = Record<string, any>;
3
4
  export interface HandlerOptions {
@@ -31,14 +32,24 @@ export declare class ReturnResponse {
31
32
  */
32
33
  setHeaders(headers: Record<string, any>): this;
33
34
  }
35
+ type Middleware = (context: MiddlewareContext<'worker'>, next: NextFunction) => Promise<void> | void;
36
+ type ServerHooks = {
37
+ middleware?: Middleware | Middleware[];
38
+ afterRender?: (ctx: AfterRenderContext, next: unknown) => Promise<void> | void;
39
+ afterMatch?: (ctx: AfterMatchContext, next: unknown) => Promise<void> | void;
40
+ };
41
+ type Page = {
42
+ entryName: string;
43
+ template: string;
44
+ serverHooks?: ServerHooks;
45
+ serverRender?: (ctx: Record<string, any>) => Promise<string>;
46
+ };
34
47
  export type Manifest = {
35
- pages: Record<string,
36
- // path
37
- {
38
- entryName: string;
39
- template: string;
40
- serverRender?: (ctx: Record<string, any>) => Promise<string>;
41
- }>;
48
+ /**
49
+ * @param key - path
50
+ */
51
+ pages: Record<string, Page>;
42
52
  routes: ModernRouteInterface[];
43
53
  };
44
- export declare const createHandler: (manifest: Manifest) => (options: HandlerOptions) => Promise<ReturnResponse>;
54
+ export declare const createHandler: (manifest: Manifest) => (options: HandlerOptions) => Promise<ReturnResponse>;
55
+ export {};
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.21.1",
18
+ "version": "2.22.1",
19
19
  "jsnext:source": "./src/index.ts",
20
20
  "types": "./dist/types/index.d.ts",
21
21
  "main": "./dist/cjs/index.js",
@@ -38,6 +38,15 @@
38
38
  },
39
39
  "types": "./dist/types/workerServer.d.ts",
40
40
  "default": "./dist/esm/workerServer.js"
41
+ },
42
+ "./renderHtml": {
43
+ "node": {
44
+ "jsnext:source": "./src/renderHtml.ts",
45
+ "import": "./dist/esm-node/renderHtml.js",
46
+ "require": "./dist/cjs/renderHtml.js"
47
+ },
48
+ "types": "./dist/types/renderHtml.d.ts",
49
+ "default": "./dist/esm/renderHtml.js"
41
50
  }
42
51
  },
43
52
  "typesVersions": {
@@ -47,6 +56,9 @@
47
56
  ],
48
57
  "worker": [
49
58
  "./dist/types/workerServer.d.ts"
59
+ ],
60
+ "renderHtml": [
61
+ "./dist/types/renderHtml.d.ts"
50
62
  ]
51
63
  }
52
64
  },
@@ -61,8 +73,9 @@
61
73
  "path-to-regexp": "^6.2.0",
62
74
  "serve-static": "^1.14.1",
63
75
  "@swc/helpers": "0.5.1",
64
- "@modern-js/utils": "2.21.1",
65
- "@modern-js/server-core": "2.21.1"
76
+ "@modern-js/utils": "2.22.1",
77
+ "@modern-js/server-core": "2.22.1",
78
+ "@modern-js/plugin": "2.22.1"
66
79
  },
67
80
  "devDependencies": {
68
81
  "@types/cookie": "^0.4.1",
@@ -78,10 +91,11 @@
78
91
  "node-mocks-http": "^1.11.0",
79
92
  "portfinder": "^1.0.28",
80
93
  "typescript": "^5",
81
- "@modern-js/types": "2.21.1",
82
- "@modern-js/server-core": "2.21.1",
83
- "@scripts/jest-config": "2.21.1",
84
- "@scripts/build": "2.21.1"
94
+ "memfs": "^3.5.1",
95
+ "@modern-js/types": "2.22.1",
96
+ "@modern-js/server-core": "2.22.1",
97
+ "@scripts/jest-config": "2.22.1",
98
+ "@scripts/build": "2.22.1"
85
99
  },
86
100
  "sideEffects": false,
87
101
  "publishConfig": {