@modern-js/server-core 2.49.1 → 2.49.3-alpha.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.
Files changed (31) hide show
  1. package/dist/cjs/base/adapters/node/bff.js +1 -1
  2. package/dist/cjs/base/adapters/node/middlewares/serverManifest.js +26 -25
  3. package/dist/cjs/base/index.js +4 -0
  4. package/dist/cjs/base/middlewares/customServer/context.js +3 -4
  5. package/dist/cjs/base/middlewares/renderHandler/index.js +11 -3
  6. package/dist/cjs/base/middlewares/renderHandler/render.js +33 -7
  7. package/dist/cjs/base/utils/error.js +17 -2
  8. package/dist/cjs/core/plugin.js +2 -0
  9. package/dist/esm/base/adapters/node/bff.js +1 -1
  10. package/dist/esm/base/adapters/node/middlewares/serverManifest.js +60 -30
  11. package/dist/esm/base/index.js +3 -1
  12. package/dist/esm/base/middlewares/customServer/context.js +3 -3
  13. package/dist/esm/base/middlewares/renderHandler/index.js +31 -5
  14. package/dist/esm/base/middlewares/renderHandler/render.js +181 -39
  15. package/dist/esm/base/utils/error.js +15 -1
  16. package/dist/esm/core/plugin.js +2 -0
  17. package/dist/esm-node/base/adapters/node/bff.js +1 -1
  18. package/dist/esm-node/base/adapters/node/middlewares/serverManifest.js +27 -26
  19. package/dist/esm-node/base/index.js +3 -1
  20. package/dist/esm-node/base/middlewares/customServer/context.js +3 -4
  21. package/dist/esm-node/base/middlewares/renderHandler/index.js +11 -3
  22. package/dist/esm-node/base/middlewares/renderHandler/render.js +34 -8
  23. package/dist/esm-node/base/utils/error.js +14 -1
  24. package/dist/esm-node/core/plugin.js +2 -0
  25. package/dist/types/base/adapters/node/middlewares/serverManifest.d.ts +2 -2
  26. package/dist/types/base/index.d.ts +1 -1
  27. package/dist/types/base/middlewares/renderHandler/index.d.ts +1 -1
  28. package/dist/types/base/middlewares/renderHandler/render.d.ts +9 -2
  29. package/dist/types/base/utils/error.d.ts +7 -0
  30. package/dist/types/core/plugin.d.ts +51 -2
  31. package/package.json +7 -7
@@ -1,12 +1,19 @@
1
- import { ServerRoute } from '@modern-js/types';
1
+ import { Logger, Metrics, Reporter, ServerRoute } from '@modern-js/types';
2
+ import type { FallbackReason } from '../../../core/plugin';
2
3
  import { Render } from '../../../core/render';
4
+ export type OnFallback = (reason: FallbackReason, utils: {
5
+ logger: Logger;
6
+ metrics?: Metrics;
7
+ reporter?: Reporter;
8
+ }, error?: unknown) => Promise<void>;
3
9
  interface CreateRenderOptions {
4
10
  routes: ServerRoute[];
5
11
  pwd: string;
6
12
  staticGenerate?: boolean;
13
+ onFallback?: OnFallback;
7
14
  metaName?: string;
8
15
  forceCSR?: boolean;
9
16
  nonce?: string;
10
17
  }
11
- export declare function createRender({ routes, pwd, metaName, staticGenerate, forceCSR, nonce, }: CreateRenderOptions): Promise<Render>;
18
+ export declare function createRender({ routes, pwd, metaName, staticGenerate, forceCSR, nonce, onFallback: onFallbackFn, }: CreateRenderOptions): Promise<Render>;
12
19
  export {};
@@ -1 +1,8 @@
1
+ import type { Logger } from '@modern-js/types';
1
2
  export declare const createErrorHtml: (status: number) => string;
3
+ export declare enum ErrorDigest {
4
+ ENOTF = "Page could not be found",
5
+ EINTER = "Internal server error",
6
+ ERENDER = "SSR render failed"
7
+ }
8
+ export declare function onError(logger: Logger, digest: ErrorDigest, error: Error | string, req?: Request): void;
@@ -1,14 +1,13 @@
1
1
  /// <reference types="node" />
2
2
  import type { IncomingMessage, ServerResponse } from 'node:http';
3
3
  import { CommonAPI, ToThreads, AsyncSetup, PluginOptions, ToRunners } from '@modern-js/plugin';
4
- import type { ModernServerContext, AfterMatchContext, AfterRenderContext, MiddlewareContext, ISAppContext, HttpMethodDecider, ServerInitHookContext, AfterStreamingRenderContext } from '@modern-js/types';
4
+ import type { ModernServerContext, AfterMatchContext, AfterRenderContext, MiddlewareContext, ISAppContext, HttpMethodDecider, ServerInitHookContext, AfterStreamingRenderContext, Logger, Metrics, Reporter } from '@modern-js/types';
5
5
  import { MiddlewareHandler as Middleware } from 'hono';
6
6
  import type { BffUserConfig, UserConfig } from '../types/config';
7
7
  import { Render } from './render';
8
8
  export type WebAdapter = (ctx: MiddlewareContext) => void | Promise<void>;
9
9
  export type NodeRequest = IncomingMessage;
10
10
  export type NodeResponse = ServerResponse;
11
- export type Adapter = (req: NodeRequest, res: NodeResponse) => void | Promise<void>;
12
11
  export type WebServerStartInput = {
13
12
  pwd: string;
14
13
  config: Record<string, any>;
@@ -27,6 +26,7 @@ type Change = {
27
26
  filename: string;
28
27
  event: 'add' | 'change' | 'unlink';
29
28
  };
29
+ export type FallbackReason = 'error' | 'header' | 'query';
30
30
  export type Route = Record<string, unknown>;
31
31
  export type RequestResult = {
32
32
  isfinish: boolean;
@@ -56,6 +56,13 @@ declare const serverHooks: {
56
56
  }, unknown>;
57
57
  config: import("@modern-js/plugin").Waterfall<ServerConfig>;
58
58
  prepare: import("@modern-js/plugin").Waterfall<void>;
59
+ fallback: import("@modern-js/plugin").ParallelWorkflow<{
60
+ reason: FallbackReason;
61
+ error: unknown;
62
+ logger: Logger;
63
+ metrics?: Metrics | undefined;
64
+ reporter?: Reporter | undefined;
65
+ }, unknown>;
59
66
  prepareWebServer: import("@modern-js/plugin").AsyncPipeline<WebServerStartInput, WebAdapter | null>;
60
67
  prepareApiServer: import("@modern-js/plugin").AsyncPipeline<APIServerStartInput, Middleware>;
61
68
  repack: import("@modern-js/plugin").Waterfall<void>;
@@ -81,6 +88,13 @@ export declare const createServerManager: () => import("@modern-js/plugin").Asyn
81
88
  }, unknown>;
82
89
  config: import("@modern-js/plugin").Waterfall<ServerConfig>;
83
90
  prepare: import("@modern-js/plugin").Waterfall<void>;
91
+ fallback: import("@modern-js/plugin").ParallelWorkflow<{
92
+ reason: FallbackReason;
93
+ error: unknown;
94
+ logger: Logger;
95
+ metrics?: Metrics | undefined;
96
+ reporter?: Reporter | undefined;
97
+ }, unknown>;
84
98
  prepareWebServer: import("@modern-js/plugin").AsyncPipeline<WebServerStartInput, WebAdapter | null>;
85
99
  prepareApiServer: import("@modern-js/plugin").AsyncPipeline<APIServerStartInput, Middleware>;
86
100
  repack: import("@modern-js/plugin").Waterfall<void>;
@@ -102,6 +116,13 @@ export declare const serverManager: import("@modern-js/plugin").AsyncManager<{
102
116
  }, unknown>;
103
117
  config: import("@modern-js/plugin").Waterfall<ServerConfig>;
104
118
  prepare: import("@modern-js/plugin").Waterfall<void>;
119
+ fallback: import("@modern-js/plugin").ParallelWorkflow<{
120
+ reason: FallbackReason;
121
+ error: unknown;
122
+ logger: Logger;
123
+ metrics?: Metrics | undefined;
124
+ reporter?: Reporter | undefined;
125
+ }, unknown>;
105
126
  prepareWebServer: import("@modern-js/plugin").AsyncPipeline<WebServerStartInput, WebAdapter | null>;
106
127
  prepareApiServer: import("@modern-js/plugin").AsyncPipeline<APIServerStartInput, Middleware>;
107
128
  repack: import("@modern-js/plugin").Waterfall<void>;
@@ -129,6 +150,13 @@ export declare const createPlugin: (setup?: AsyncSetup<{
129
150
  }, unknown>;
130
151
  config: import("@modern-js/plugin").Waterfall<ServerConfig>;
131
152
  prepare: import("@modern-js/plugin").Waterfall<void>;
153
+ fallback: import("@modern-js/plugin").ParallelWorkflow<{
154
+ reason: FallbackReason;
155
+ error: unknown;
156
+ logger: Logger;
157
+ metrics?: Metrics | undefined;
158
+ reporter?: Reporter | undefined;
159
+ }, unknown>;
132
160
  prepareWebServer: import("@modern-js/plugin").AsyncPipeline<WebServerStartInput, WebAdapter | null>;
133
161
  prepareApiServer: import("@modern-js/plugin").AsyncPipeline<APIServerStartInput, Middleware>;
134
162
  repack: import("@modern-js/plugin").Waterfall<void>;
@@ -149,6 +177,13 @@ export declare const createPlugin: (setup?: AsyncSetup<{
149
177
  }, unknown>;
150
178
  config: import("@modern-js/plugin").Waterfall<ServerConfig>;
151
179
  prepare: import("@modern-js/plugin").Waterfall<void>;
180
+ fallback: import("@modern-js/plugin").ParallelWorkflow<{
181
+ reason: FallbackReason;
182
+ error: unknown;
183
+ logger: Logger;
184
+ metrics?: Metrics | undefined;
185
+ reporter?: Reporter | undefined;
186
+ }, unknown>;
152
187
  prepareWebServer: import("@modern-js/plugin").AsyncPipeline<WebServerStartInput, WebAdapter | null>;
153
188
  prepareApiServer: import("@modern-js/plugin").AsyncPipeline<APIServerStartInput, Middleware>;
154
189
  repack: import("@modern-js/plugin").Waterfall<void>;
@@ -165,6 +200,13 @@ export declare const createPlugin: (setup?: AsyncSetup<{
165
200
  }, unknown>;
166
201
  config: import("@modern-js/plugin").Waterfall<ServerConfig>;
167
202
  prepare: import("@modern-js/plugin").Waterfall<void>;
203
+ fallback: import("@modern-js/plugin").ParallelWorkflow<{
204
+ reason: FallbackReason;
205
+ error: unknown;
206
+ logger: Logger;
207
+ metrics?: Metrics | undefined;
208
+ reporter?: Reporter | undefined;
209
+ }, unknown>;
168
210
  prepareWebServer: import("@modern-js/plugin").AsyncPipeline<WebServerStartInput, WebAdapter | null>;
169
211
  prepareApiServer: import("@modern-js/plugin").AsyncPipeline<APIServerStartInput, Middleware>;
170
212
  repack: import("@modern-js/plugin").Waterfall<void>;
@@ -185,6 +227,13 @@ export declare const createPlugin: (setup?: AsyncSetup<{
185
227
  }, unknown>;
186
228
  config: import("@modern-js/plugin").Waterfall<ServerConfig>;
187
229
  prepare: import("@modern-js/plugin").Waterfall<void>;
230
+ fallback: import("@modern-js/plugin").ParallelWorkflow<{
231
+ reason: FallbackReason;
232
+ error: unknown;
233
+ logger: Logger;
234
+ metrics?: Metrics | undefined;
235
+ reporter?: Reporter | undefined;
236
+ }, unknown>;
188
237
  prepareWebServer: import("@modern-js/plugin").AsyncPipeline<WebServerStartInput, WebAdapter | null>;
189
238
  prepareApiServer: import("@modern-js/plugin").AsyncPipeline<APIServerStartInput, Middleware>;
190
239
  repack: import("@modern-js/plugin").Waterfall<void>;
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.49.1",
18
+ "version": "2.49.3-alpha.0",
19
19
  "jsnext:source": "./src/index.ts",
20
20
  "types": "./dist/types/index.d.ts",
21
21
  "main": "./dist/cjs/index.js",
@@ -69,9 +69,9 @@
69
69
  "hono": "^3.12.2",
70
70
  "isbot": "3.8.0",
71
71
  "merge-deep": "^3.0.3",
72
- "@modern-js/plugin": "2.49.1",
73
- "@modern-js/runtime-utils": "2.49.1",
74
- "@modern-js/utils": "2.49.1"
72
+ "@modern-js/runtime-utils": "2.49.2",
73
+ "@modern-js/utils": "2.49.2",
74
+ "@modern-js/plugin": "2.49.2"
75
75
  },
76
76
  "devDependencies": {
77
77
  "@types/jest": "^29",
@@ -81,9 +81,9 @@
81
81
  "jest": "^29",
82
82
  "ts-jest": "^29.1.0",
83
83
  "typescript": "^5",
84
- "@modern-js/types": "2.49.1",
85
- "@scripts/jest-config": "2.49.1",
86
- "@scripts/build": "2.49.1"
84
+ "@scripts/build": "2.49.2",
85
+ "@modern-js/types": "2.49.2",
86
+ "@scripts/jest-config": "2.49.2"
87
87
  },
88
88
  "sideEffects": false,
89
89
  "publishConfig": {