@modern-js/prod-server 2.9.1-alpha.0 → 2.11.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 (139) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/cjs/libs/hook-api/index.js +7 -26
  3. package/dist/cjs/libs/render/index.js +2 -1
  4. package/dist/cjs/libs/render/ssr.js +7 -5
  5. package/dist/{js/node/libs/metrics.js → cjs/libs/render/utils.js} +25 -12
  6. package/dist/cjs/server/index.js +1 -1
  7. package/dist/cjs/server/modernServer.js +75 -80
  8. package/dist/esm/libs/hook-api/index.js +9 -37
  9. package/dist/esm/libs/render/index.js +2 -1
  10. package/dist/esm/libs/render/ssr.js +6 -4
  11. package/dist/esm/libs/render/utils.js +12 -0
  12. package/dist/esm/server/index.js +2 -2
  13. package/dist/esm/server/modernServer.js +108 -103
  14. package/dist/esm-node/libs/hook-api/index.js +7 -26
  15. package/dist/esm-node/libs/render/index.js +2 -1
  16. package/dist/esm-node/libs/render/ssr.js +7 -7
  17. package/dist/esm-node/libs/render/utils.js +23 -0
  18. package/dist/esm-node/server/index.js +1 -1
  19. package/dist/esm-node/server/modernServer.js +75 -80
  20. package/dist/types/libs/context/context.d.ts +1 -1
  21. package/dist/types/libs/render/utils.d.ts +5 -0
  22. package/dist/types/server/index.d.ts +2 -1
  23. package/dist/types/server/modernServer.d.ts +4 -4
  24. package/dist/types/type.d.ts +1 -1
  25. package/dist/types/utils.d.ts +1 -1
  26. package/package.json +9 -7
  27. package/dist/js/modern/constants.js +0 -35
  28. package/dist/js/modern/index.js +0 -18
  29. package/dist/js/modern/libs/context/context.js +0 -160
  30. package/dist/js/modern/libs/context/index.js +0 -6
  31. package/dist/js/modern/libs/hook-api/index.js +0 -134
  32. package/dist/js/modern/libs/hook-api/route.js +0 -20
  33. package/dist/js/modern/libs/hook-api/template.js +0 -73
  34. package/dist/js/modern/libs/loadConfig.js +0 -62
  35. package/dist/js/modern/libs/logger.js +0 -111
  36. package/dist/js/modern/libs/metrics.js +0 -11
  37. package/dist/js/modern/libs/proxy.js +0 -92
  38. package/dist/js/modern/libs/render/cache/__tests__/cache.fun.test.js +0 -114
  39. package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +0 -254
  40. package/dist/js/modern/libs/render/cache/__tests__/cacheable.js +0 -47
  41. package/dist/js/modern/libs/render/cache/__tests__/error-configuration.js +0 -37
  42. package/dist/js/modern/libs/render/cache/__tests__/matched-cache.js +0 -91
  43. package/dist/js/modern/libs/render/cache/index.js +0 -115
  44. package/dist/js/modern/libs/render/cache/page-caches/index.js +0 -32
  45. package/dist/js/modern/libs/render/cache/page-caches/lru.js +0 -29
  46. package/dist/js/modern/libs/render/cache/spr.js +0 -248
  47. package/dist/js/modern/libs/render/cache/type.js +0 -0
  48. package/dist/js/modern/libs/render/cache/util.js +0 -102
  49. package/dist/js/modern/libs/render/index.js +0 -86
  50. package/dist/js/modern/libs/render/measure.js +0 -68
  51. package/dist/js/modern/libs/render/reader.js +0 -107
  52. package/dist/js/modern/libs/render/ssr.js +0 -100
  53. package/dist/js/modern/libs/render/static.js +0 -60
  54. package/dist/js/modern/libs/render/type.js +0 -9
  55. package/dist/js/modern/libs/route/index.js +0 -54
  56. package/dist/js/modern/libs/route/matcher.js +0 -87
  57. package/dist/js/modern/libs/route/route.js +0 -16
  58. package/dist/js/modern/libs/serve-file.js +0 -67
  59. package/dist/js/modern/server/index.js +0 -208
  60. package/dist/js/modern/server/modern-server-split.js +0 -74
  61. package/dist/js/modern/server/modern-server.js +0 -554
  62. package/dist/js/modern/type.js +0 -0
  63. package/dist/js/modern/utils.js +0 -136
  64. package/dist/js/modern/worker-server.js +0 -89
  65. package/dist/js/node/constants.js +0 -62
  66. package/dist/js/node/index.js +0 -44
  67. package/dist/js/node/libs/context/context.js +0 -189
  68. package/dist/js/node/libs/context/index.js +0 -30
  69. package/dist/js/node/libs/hook-api/index.js +0 -164
  70. package/dist/js/node/libs/hook-api/route.js +0 -43
  71. package/dist/js/node/libs/hook-api/template.js +0 -97
  72. package/dist/js/node/libs/loadConfig.js +0 -91
  73. package/dist/js/node/libs/logger.js +0 -133
  74. package/dist/js/node/libs/proxy.js +0 -114
  75. package/dist/js/node/libs/render/cache/__tests__/cache.fun.test.js +0 -115
  76. package/dist/js/node/libs/render/cache/__tests__/cache.test.js +0 -245
  77. package/dist/js/node/libs/render/cache/__tests__/cacheable.js +0 -70
  78. package/dist/js/node/libs/render/cache/__tests__/error-configuration.js +0 -60
  79. package/dist/js/node/libs/render/cache/__tests__/matched-cache.js +0 -114
  80. package/dist/js/node/libs/render/cache/index.js +0 -134
  81. package/dist/js/node/libs/render/cache/page-caches/index.js +0 -55
  82. package/dist/js/node/libs/render/cache/page-caches/lru.js +0 -58
  83. package/dist/js/node/libs/render/cache/spr.js +0 -270
  84. package/dist/js/node/libs/render/cache/type.js +0 -15
  85. package/dist/js/node/libs/render/cache/util.js +0 -138
  86. package/dist/js/node/libs/render/index.js +0 -115
  87. package/dist/js/node/libs/render/measure.js +0 -90
  88. package/dist/js/node/libs/render/reader.js +0 -140
  89. package/dist/js/node/libs/render/ssr.js +0 -123
  90. package/dist/js/node/libs/render/static.js +0 -89
  91. package/dist/js/node/libs/render/type.js +0 -32
  92. package/dist/js/node/libs/route/index.js +0 -78
  93. package/dist/js/node/libs/route/matcher.js +0 -106
  94. package/dist/js/node/libs/route/route.js +0 -39
  95. package/dist/js/node/libs/serve-file.js +0 -97
  96. package/dist/js/node/server/index.js +0 -219
  97. package/dist/js/node/server/modern-server-split.js +0 -97
  98. package/dist/js/node/server/modern-server.js +0 -559
  99. package/dist/js/node/type.js +0 -15
  100. package/dist/js/node/utils.js +0 -166
  101. package/dist/js/node/worker-server.js +0 -113
  102. package/dist/js/treeshaking/constants.js +0 -29
  103. package/dist/js/treeshaking/index.js +0 -13
  104. package/dist/js/treeshaking/libs/context/context.js +0 -274
  105. package/dist/js/treeshaking/libs/context/index.js +0 -5
  106. package/dist/js/treeshaking/libs/hook-api/index.js +0 -281
  107. package/dist/js/treeshaking/libs/hook-api/route.js +0 -68
  108. package/dist/js/treeshaking/libs/hook-api/template.js +0 -127
  109. package/dist/js/treeshaking/libs/loadConfig.js +0 -82
  110. package/dist/js/treeshaking/libs/logger.js +0 -205
  111. package/dist/js/treeshaking/libs/metrics.js +0 -6
  112. package/dist/js/treeshaking/libs/proxy.js +0 -244
  113. package/dist/js/treeshaking/libs/render/cache/__tests__/cache.fun.test.js +0 -291
  114. package/dist/js/treeshaking/libs/render/cache/__tests__/cache.test.js +0 -781
  115. package/dist/js/treeshaking/libs/render/cache/__tests__/cacheable.js +0 -67
  116. package/dist/js/treeshaking/libs/render/cache/__tests__/error-configuration.js +0 -45
  117. package/dist/js/treeshaking/libs/render/cache/__tests__/matched-cache.js +0 -147
  118. package/dist/js/treeshaking/libs/render/cache/index.js +0 -346
  119. package/dist/js/treeshaking/libs/render/cache/page-caches/index.js +0 -154
  120. package/dist/js/treeshaking/libs/render/cache/page-caches/lru.js +0 -84
  121. package/dist/js/treeshaking/libs/render/cache/spr.js +0 -492
  122. package/dist/js/treeshaking/libs/render/cache/type.js +0 -1
  123. package/dist/js/treeshaking/libs/render/cache/util.js +0 -280
  124. package/dist/js/treeshaking/libs/render/index.js +0 -234
  125. package/dist/js/treeshaking/libs/render/measure.js +0 -146
  126. package/dist/js/treeshaking/libs/render/reader.js +0 -339
  127. package/dist/js/treeshaking/libs/render/ssr.js +0 -223
  128. package/dist/js/treeshaking/libs/render/static.js +0 -216
  129. package/dist/js/treeshaking/libs/render/type.js +0 -7
  130. package/dist/js/treeshaking/libs/route/index.js +0 -130
  131. package/dist/js/treeshaking/libs/route/matcher.js +0 -143
  132. package/dist/js/treeshaking/libs/route/route.js +0 -40
  133. package/dist/js/treeshaking/libs/serve-file.js +0 -184
  134. package/dist/js/treeshaking/server/index.js +0 -505
  135. package/dist/js/treeshaking/server/modern-server-split.js +0 -360
  136. package/dist/js/treeshaking/server/modern-server.js +0 -1089
  137. package/dist/js/treeshaking/type.js +0 -1
  138. package/dist/js/treeshaking/utils.js +0 -147
  139. package/dist/js/treeshaking/worker-server.js +0 -233
@@ -27,7 +27,6 @@ import {
27
27
  import * as reader from "../libs/render/reader";
28
28
  import { createProxyHandler } from "../libs/proxy";
29
29
  import { createContext } from "../libs/context";
30
- import { templateInjectableStream } from "../libs/hook-api/template";
31
30
  import {
32
31
  AGGRED_DIR,
33
32
  ERROR_DIGEST,
@@ -53,7 +52,7 @@ class ModernServer {
53
52
  }) {
54
53
  this.handlers = [];
55
54
  this.reader = reader;
56
- this.beforeRouteHandler = null;
55
+ this.loaderHandler = null;
57
56
  this.frameWebHandler = null;
58
57
  this.frameAPIHandler = null;
59
58
  this.proxyHandler = null;
@@ -91,7 +90,7 @@ class ModernServer {
91
90
  this.router.reset(usageRoutes);
92
91
  this.warmupSSRBundle();
93
92
  await this.prepareFrameHandler();
94
- await this.prepareBeforeRouteHandler(usageRoutes, distDir);
93
+ await this.prepareLoaderHandler(usageRoutes, distDir);
95
94
  const ssrConfig = (_b = this.conf.server) == null ? void 0 : _b.ssr;
96
95
  const forceCSR = typeof ssrConfig === "object" ? ssrConfig.forceCSR : false;
97
96
  this.routeRenderHandler = createRenderHandler({
@@ -102,24 +101,12 @@ class ModernServer {
102
101
  await this.setupBeforeProdMiddleware();
103
102
  this.addHandler(this.setupStaticMiddleware((_c = this.conf.output) == null ? void 0 : _c.assetPrefix));
104
103
  this.addHandler(faviconFallbackHandler);
105
- this.addBeforeRouteHandler();
106
104
  this.addHandler(this.routeHandler.bind(this));
107
105
  this.compose();
108
106
  }
109
107
  // server ready
110
108
  onRepack(_) {
111
109
  }
112
- addBeforeRouteHandler() {
113
- this.addHandler(async (context, next) => {
114
- if (this.beforeRouteHandler) {
115
- await this.beforeRouteHandler(context);
116
- if (this.isSend(context.res)) {
117
- return;
118
- }
119
- }
120
- return next();
121
- });
122
- }
123
110
  onServerChange({ filepath }) {
124
111
  const { pwd } = this;
125
112
  const { api, server } = AGGRED_DIR;
@@ -146,6 +133,9 @@ class ModernServer {
146
133
  if (!result) {
147
134
  return null;
148
135
  }
136
+ if (result.contentStream) {
137
+ return result.contentStream;
138
+ }
149
139
  return result.content.toString();
150
140
  }
151
141
  async createHTTPServer(handler) {
@@ -174,9 +164,9 @@ class ModernServer {
174
164
  context.error(ERROR_DIGEST.ENOTF, "404 Not Found");
175
165
  this.renderErrorPage(context, 404);
176
166
  }
177
- async prepareBeforeRouteHandler(specs, distDir) {
167
+ async prepareLoaderHandler(specs, distDir) {
178
168
  const { runner } = this;
179
- const handler = await runner.preparebeforeRouteHandler(
169
+ const handler = await runner.prepareLoaderHandler(
180
170
  {
181
171
  serverRoutes: specs,
182
172
  distDir
@@ -185,7 +175,7 @@ class ModernServer {
185
175
  onLast: () => null
186
176
  }
187
177
  );
188
- this.beforeRouteHandler = handler;
178
+ this.loaderHandler = handler;
189
179
  }
190
180
  // gather frame extension and get framework handler
191
181
  async prepareFrameHandler(options) {
@@ -271,11 +261,48 @@ class ModernServer {
271
261
  await this.frameAPIHandler(req, res);
272
262
  }
273
263
  async handleWeb(context, route) {
274
- return this.routeRenderHandler({
264
+ const { res } = context;
265
+ if (this.loaderHandler) {
266
+ await this.loaderHandler(context);
267
+ if (this.isSend(res)) {
268
+ return null;
269
+ }
270
+ }
271
+ context.setParams(route.params);
272
+ context.setServerData("router", {
273
+ baseUrl: route.urlPath,
274
+ params: route.params
275
+ });
276
+ if (route.responseHeaders) {
277
+ Object.keys(route.responseHeaders).forEach((key) => {
278
+ const value = route.responseHeaders[key];
279
+ if (value) {
280
+ context.res.setHeader(key, value);
281
+ }
282
+ });
283
+ }
284
+ const renderResult = await this.routeRenderHandler({
275
285
  ctx: context,
276
286
  route,
277
287
  runner: this.runner
278
288
  });
289
+ if (!renderResult) {
290
+ this.render404(context);
291
+ return null;
292
+ }
293
+ if (renderResult.redirect) {
294
+ this.redirect(
295
+ res,
296
+ renderResult.content,
297
+ renderResult.statusCode
298
+ );
299
+ return null;
300
+ }
301
+ if (this.isSend(res)) {
302
+ return null;
303
+ }
304
+ res.setHeader("content-type", renderResult.contentType);
305
+ return renderResult;
279
306
  }
280
307
  async proxy() {
281
308
  return null;
@@ -308,31 +335,31 @@ class ModernServer {
308
335
  await this.handleAPI(context);
309
336
  return;
310
337
  }
311
- const afterMatchContext = createAfterMatchContext(context, route.entryName);
312
- if (this.runMode === RUN_MODE.FULL) {
313
- await this.runner.afterMatch(afterMatchContext, { onLast: noop });
314
- }
315
- if (this.isSend(res)) {
316
- return;
317
- }
318
- const { current, url, status } = afterMatchContext.router;
319
- if (url) {
320
- this.redirect(res, url, status);
321
- return;
322
- }
323
- if (route.entryName !== current) {
324
- const matched2 = this.router.matchEntry(current);
325
- if (!matched2) {
326
- this.render404(context);
338
+ if (route.entryName) {
339
+ const afterMatchContext = createAfterMatchContext(
340
+ context,
341
+ route.entryName
342
+ );
343
+ if (this.runMode === RUN_MODE.FULL) {
344
+ await this.runner.afterMatch(afterMatchContext, { onLast: noop });
345
+ }
346
+ if (this.isSend(res)) {
327
347
  return;
328
348
  }
329
- route = matched2.generate(context.url);
349
+ const { current, url, status } = afterMatchContext.router;
350
+ if (url) {
351
+ this.redirect(res, url, status);
352
+ return;
353
+ }
354
+ if (route.entryName !== current) {
355
+ const matched2 = this.router.matchEntry(current);
356
+ if (!matched2) {
357
+ this.render404(context);
358
+ return;
359
+ }
360
+ route = matched2.generate(context.url);
361
+ }
330
362
  }
331
- context.setParams(route.params);
332
- context.setServerData("router", {
333
- baseUrl: route.urlPath,
334
- params: route.params
335
- });
336
363
  if (this.frameWebHandler) {
337
364
  res.locals = res.locals || {};
338
365
  const middlewareContext = createMiddlewareContext(context);
@@ -341,47 +368,20 @@ class ModernServer {
341
368
  ...res.locals,
342
369
  ...middlewareContext.response.locals
343
370
  };
344
- }
345
- if (this.isSend(res)) {
346
- return;
347
- }
348
- if (route.responseHeaders) {
349
- Object.keys(route.responseHeaders).forEach((key) => {
350
- const value = route.responseHeaders[key];
351
- if (value) {
352
- context.res.setHeader(key, value);
353
- }
354
- });
371
+ if (this.isSend(res)) {
372
+ return;
373
+ }
355
374
  }
356
375
  const renderResult = await this.handleWeb(context, route);
357
376
  if (!renderResult) {
358
- this.render404(context);
359
- return;
360
- }
361
- if (renderResult.redirect) {
362
- this.redirect(
363
- res,
364
- renderResult.content,
365
- renderResult.statusCode
366
- );
367
377
  return;
368
378
  }
369
- if (this.isSend(res)) {
379
+ const { contentStream: responseStream } = renderResult;
380
+ let { content: response } = renderResult;
381
+ if (route.entryName && responseStream) {
382
+ responseStream.pipe(res);
370
383
  return;
371
384
  }
372
- res.setHeader("content-type", renderResult.contentType);
373
- const { contentStream } = renderResult;
374
- if (contentStream) {
375
- contentStream.pipe(
376
- templateInjectableStream({
377
- prependHead: route.entryName ? `<script>window._SERVER_DATA=${JSON.stringify(
378
- context.serverData
379
- )}</script>` : void 0
380
- })
381
- ).pipe(res);
382
- return;
383
- }
384
- let response = renderResult.content;
385
385
  if (route.entryName) {
386
386
  const afterRenderContext = createAfterRenderContext(
387
387
  context,
@@ -393,11 +393,6 @@ class ModernServer {
393
393
  if (this.isSend(res)) {
394
394
  return;
395
395
  }
396
- afterRenderContext.template.prependHead(
397
- `<script>window._SERVER_DATA=${JSON.stringify(
398
- context.serverData
399
- )}</script>`
400
- );
401
396
  response = afterRenderContext.template.get();
402
397
  }
403
398
  res.end(response);
@@ -2,7 +2,7 @@
2
2
  /// <reference types="node" />
3
3
  /// <reference types="node" />
4
4
  /// <reference types="node/http" />
5
- /// <reference types=".dts-temp/gxxotyts4i9oiicydl5gf/src/type" />
5
+ /// <reference types=".dts-temp/k52V3rAmkkpigea7EM0nH/src/type" />
6
6
  import { IncomingMessage, ServerResponse } from 'http';
7
7
  import qs from 'querystring';
8
8
  import type { ModernServerContext as ModernServerContextInterface } from '@modern-js/types';
@@ -0,0 +1,5 @@
1
+ /// <reference types="node" />
2
+ import { Readable } from 'stream';
3
+ import type { ModernServerContext } from '@modern-js/types';
4
+ export declare const injectSeverData: (content: string, context: ModernServerContext) => string;
5
+ export declare const injectServerDataStream: (content: Readable, context: ModernServerContext) => import("stream").Transform;
@@ -1,5 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
+ /// <reference types="node" />
3
4
  import { IncomingMessage, ServerResponse } from 'http';
4
5
  import type { ListenOptions } from 'net';
5
6
  import { ModernServerOptions, ServerConstructor } from '../type';
@@ -45,7 +46,7 @@ export declare class Server {
45
46
  close(): Promise<void>;
46
47
  listen<T extends number | ListenOptions | undefined>(options: T, listener: any): void;
47
48
  getRequestHandler(): (req: IncomingMessage, res: ServerResponse, next?: () => void) => void;
48
- render(req: IncomingMessage, res: ServerResponse, url?: string): Promise<string | null>;
49
+ render(req: IncomingMessage, res: ServerResponse, url?: string): Promise<string | import("stream").Readable | null>;
49
50
  private createHookRunner;
50
51
  private injectContext;
51
52
  private initAppContext;
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  import { IncomingMessage, ServerResponse, Server } from 'http';
3
4
  import { Adapter, WebAdapter, APIServerStartInput, ServerOptions } from '@modern-js/server-core';
4
5
  import type { ModernServerContext, ServerRoute } from '@modern-js/types';
@@ -23,7 +24,7 @@ export declare class ModernServer implements ModernServerInterface {
23
24
  protected reader: typeof reader;
24
25
  protected readonly proxyTarget: ModernServerOptions['proxyTarget'];
25
26
  private routeRenderHandler;
26
- private beforeRouteHandler;
27
+ private loaderHandler;
27
28
  private frameWebHandler;
28
29
  private frameAPIHandler;
29
30
  private proxyHandler;
@@ -41,19 +42,18 @@ export declare class ModernServer implements ModernServerInterface {
41
42
  }: ModernServerOptions);
42
43
  onInit(runner: ServerHookRunner, app: Server): Promise<void>;
43
44
  onRepack(_: BuildOptions): void;
44
- addBeforeRouteHandler(): void;
45
45
  protected onServerChange({
46
46
  filepath
47
47
  }: {
48
48
  filepath: string;
49
49
  }): void;
50
50
  getRequestHandler(): (req: IncomingMessage, res: ServerResponse, next?: () => void) => void | ServerResponse;
51
- render(req: IncomingMessage, res: ServerResponse, url?: string): Promise<string | null>;
51
+ render(req: IncomingMessage, res: ServerResponse, url?: string): Promise<string | import("stream").Readable | null>;
52
52
  createHTTPServer(handler: (req: IncomingMessage, res: ServerResponse, next?: () => void) => void): Promise<Server<typeof IncomingMessage, typeof ServerResponse>>;
53
53
  protected getRoutes(): ServerRoute[];
54
54
  protected addHandler(handler: ModernServerHandler): void;
55
55
  protected render404(context: ModernServerContext): void;
56
- protected prepareBeforeRouteHandler(specs: ServerRoute[], distDir: string): Promise<void>;
56
+ protected prepareLoaderHandler(specs: ServerRoute[], distDir: string): Promise<void>;
57
57
  protected prepareFrameHandler(options?: {
58
58
  onlyApi: boolean;
59
59
  onlyWeb: boolean;
@@ -61,7 +61,7 @@ export interface ModernServerInterface {
61
61
  onRepack: (options: BuildOptions) => void;
62
62
  getRequestHandler: () => (req: IncomingMessage, res: ServerResponse, next?: () => void) => void;
63
63
  createHTTPServer: (handler: (req: IncomingMessage, res: ServerResponse, next?: () => void) => void) => Promise<Server>;
64
- render: (req: IncomingMessage, res: ServerResponse, url?: string) => Promise<string | null>;
64
+ render: (req: IncomingMessage, res: ServerResponse, url?: string) => Promise<string | Readable | null>;
65
65
  }
66
66
  export type ServerConstructor = (options: ModernServerOptions) => ModernServerInterface;
67
67
  export type ModernServerHandler = (context: ModernServerContext, next: NextFunction) => Promise<void> | void;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node/http" />
3
- /// <reference types=".dts-temp/gxxotyts4i9oiicydl5gf/src/type" />
3
+ /// <reference types=".dts-temp/k52V3rAmkkpigea7EM0nH/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;
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "2.9.1-alpha.0",
14
+ "version": "2.11.0",
15
15
  "jsnext:source": "./src/index.ts",
16
16
  "types": "./dist/types/index.d.ts",
17
17
  "main": "./dist/cjs/index.js",
@@ -23,6 +23,7 @@
23
23
  "import": "./dist/esm-node/index.js",
24
24
  "require": "./dist/cjs/index.js"
25
25
  },
26
+ "types": "./dist/types/index.d.ts",
26
27
  "default": "./dist/esm/index.js"
27
28
  },
28
29
  "./worker": {
@@ -31,6 +32,7 @@
31
32
  "import": "./dist/esm-node/workerServer.js",
32
33
  "require": "./dist/cjs/workerServer.js"
33
34
  },
35
+ "types": "./dist/types/workerServer.d.ts",
34
36
  "default": "./dist/esm/workerServer.js"
35
37
  }
36
38
  },
@@ -54,8 +56,8 @@
54
56
  "merge-deep": "^3.0.3",
55
57
  "path-to-regexp": "^6.2.0",
56
58
  "serve-static": "^1.14.1",
57
- "@modern-js/utils": "2.9.0",
58
- "@modern-js/server-core": "2.9.0"
59
+ "@modern-js/utils": "2.11.0",
60
+ "@modern-js/server-core": "2.11.0"
59
61
  },
60
62
  "devDependencies": {
61
63
  "@types/cookie": "^0.4.1",
@@ -71,10 +73,10 @@
71
73
  "node-mocks-http": "^1.11.0",
72
74
  "portfinder": "^1.0.28",
73
75
  "typescript": "^4",
74
- "@modern-js/types": "2.9.0",
75
- "@modern-js/server-core": "2.9.0",
76
- "@scripts/jest-config": "2.9.0",
77
- "@scripts/build": "2.9.0"
76
+ "@modern-js/types": "2.11.0",
77
+ "@modern-js/server-core": "2.11.0",
78
+ "@scripts/jest-config": "2.11.0",
79
+ "@scripts/build": "2.11.0"
78
80
  },
79
81
  "sideEffects": false,
80
82
  "publishConfig": {
@@ -1,35 +0,0 @@
1
- const AGGRED_DIR = {
2
- mock: "config/mock",
3
- server: "server",
4
- api: "api",
5
- shared: "shared",
6
- lambda: "lambda"
7
- };
8
- var ApiServerMode = /* @__PURE__ */ ((ApiServerMode2) => {
9
- ApiServerMode2["func"] = "function";
10
- ApiServerMode2["frame"] = "framework";
11
- return ApiServerMode2;
12
- })(ApiServerMode || {});
13
- const ERROR_DIGEST = {
14
- INIT: "Server init error",
15
- ENOTF: "Page could not be found",
16
- WARMUP: "SSR warmup failed",
17
- EINTER: "Internal server error",
18
- ERENDER: "SSR render failed",
19
- EMICROINJ: "Get micro-frontend info failed"
20
- };
21
- const ERROR_PAGE_TEXT = {
22
- 404: "This page could not be found.",
23
- 500: "Internal Server Error."
24
- };
25
- const RUN_MODE = {
26
- FULL: "full",
27
- TYPE: "type"
28
- };
29
- export {
30
- AGGRED_DIR,
31
- ApiServerMode,
32
- ERROR_DIGEST,
33
- ERROR_PAGE_TEXT,
34
- RUN_MODE
35
- };
@@ -1,18 +0,0 @@
1
- import { Server } from "./server";
2
- import { ModernServer } from "./server/modern-server";
3
- import { createProxyHandler } from "./libs/proxy";
4
- export * from "./type";
5
- export * from "./constants";
6
- var src_default = (options) => {
7
- if (options == null) {
8
- throw new Error("can not start mserver without options");
9
- }
10
- const server = new Server(options);
11
- return server.init();
12
- };
13
- export {
14
- ModernServer,
15
- Server,
16
- createProxyHandler,
17
- src_default as default
18
- };
@@ -1,160 +0,0 @@
1
- import { URL } from "url";
2
- import qs from "querystring";
3
- import { Buffer } from "buffer";
4
- import createEtag from "etag";
5
- import fresh from "fresh";
6
- import { headersWithoutCookie } from "../../utils";
7
- class ModernServerContext {
8
- constructor(req, res, options) {
9
- this.params = {};
10
- this.options = {};
11
- this.req = req;
12
- this.res = res;
13
- this.options = options || {};
14
- this.serverData = {};
15
- this.bind();
16
- }
17
- get logger() {
18
- return this.req.logger;
19
- }
20
- get metrics() {
21
- return this.req.metrics;
22
- }
23
- bind() {
24
- const { req, res } = this;
25
- req.get = (key) => this.getReqHeader(key);
26
- res.set = (key, value) => this.res.setHeader(key, value);
27
- res.send = (body) => {
28
- this.send(body);
29
- };
30
- }
31
- send(body) {
32
- try {
33
- const generateETag = !this.res.getHeader("ETag") && this.options.etag;
34
- if (body !== void 0 && generateETag) {
35
- const encoding = typeof body === "string" ? "utf-8" : void 0;
36
- const buf = !Buffer.isBuffer(body) ? Buffer.from(body, encoding) : body;
37
- const etag = createEtag(buf, { weak: true });
38
- if (etag) {
39
- this.res.setHeader("ETag", etag);
40
- }
41
- }
42
- if (this.fresh) {
43
- this.status = 304;
44
- }
45
- } catch (e) {
46
- this.logger.error(e.message);
47
- }
48
- this.res.end(body);
49
- }
50
- setParams(params) {
51
- this.params = params;
52
- }
53
- setServerData(key, value) {
54
- this.serverData[key] = value;
55
- }
56
- getReqHeader(key) {
57
- const { req } = this;
58
- const field = key.toLowerCase();
59
- switch (field) {
60
- case "referer":
61
- case "referrer":
62
- return req.headers.referrer || req.headers.referer || "";
63
- default:
64
- return req.headers[field] || "";
65
- }
66
- }
67
- get fresh() {
68
- const { status, res, method } = this;
69
- if ("GET" !== method && "HEAD" !== method) {
70
- return false;
71
- }
72
- if (status >= 200 && status < 300 || 304 === status) {
73
- return fresh(this.headers, {
74
- etag: res.getHeader("ETag"),
75
- "last-modified": res.getHeader("Last-Modified")
76
- });
77
- }
78
- return false;
79
- }
80
- get headers() {
81
- return this.req.headers;
82
- }
83
- get method() {
84
- return this.req.method;
85
- }
86
- get url() {
87
- return this.req.url || "";
88
- }
89
- set url(val) {
90
- this.req.url = val;
91
- }
92
- get host() {
93
- let host = this.getReqHeader("X-Forwarded-Host");
94
- if (!host) {
95
- host = this.getReqHeader("Host");
96
- }
97
- return host.split(/\s*,\s*/, 1)[0] || "";
98
- }
99
- get protocol() {
100
- if (this.req.socket.encrypted) {
101
- return "https";
102
- }
103
- const proto = this.getReqHeader("X-Forwarded-Proto");
104
- return proto ? proto.split(/\s*,\s*/, 1)[0] : "http";
105
- }
106
- get origin() {
107
- return `${this.protocol}://${this.host}`;
108
- }
109
- get href() {
110
- return this.origin + this.url;
111
- }
112
- get parsedURL() {
113
- const url = new URL(this.req.url, this.origin);
114
- return url;
115
- }
116
- get path() {
117
- return this.parsedURL.pathname;
118
- }
119
- set path(p) {
120
- const url = new URL(this.req.url, this.origin);
121
- if (!url || !p) {
122
- return;
123
- }
124
- if (url.pathname === p) {
125
- return;
126
- }
127
- url.pathname = p;
128
- this.url = url.toString();
129
- }
130
- get querystring() {
131
- if (!this.req) {
132
- return "";
133
- }
134
- return this.parsedURL.search.replace(/^\?/, "") || "";
135
- }
136
- get query() {
137
- const str = this.querystring;
138
- return qs.parse(str);
139
- }
140
- get status() {
141
- return this.res.statusCode;
142
- }
143
- set status(statusCode) {
144
- this.res.statusCode = statusCode;
145
- }
146
- resHasHandled() {
147
- return this.res.writableEnded;
148
- }
149
- error(dig, e = "") {
150
- this.logger.error(
151
- `Web Server Error - ${dig}, error = %s, req.url = %s, req.headers = %o`,
152
- e instanceof Error ? e.stack || e.message : e,
153
- this.path,
154
- headersWithoutCookie(this.headers)
155
- );
156
- }
157
- }
158
- export {
159
- ModernServerContext
160
- };
@@ -1,6 +0,0 @@
1
- import { ModernServerContext } from "./context";
2
- const createContext = (req, res, options) => new ModernServerContext(req, res, options);
3
- export {
4
- ModernServerContext,
5
- createContext
6
- };