@modern-js/prod-server 2.47.1 → 2.48.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 (56) hide show
  1. package/dist/cjs/libs/context/context.js +4 -8
  2. package/dist/cjs/libs/hook-api/base.js +0 -11
  3. package/dist/cjs/libs/hook-api/index.worker.js +0 -3
  4. package/dist/cjs/libs/hook-api/route.js +0 -4
  5. package/dist/cjs/libs/hook-api/template.js +0 -2
  6. package/dist/cjs/libs/render/ssr.js +7 -3
  7. package/dist/cjs/libs/render/ssrCache/cacheMod.js +0 -5
  8. package/dist/cjs/libs/render/ssrCache/index.js +10 -3
  9. package/dist/cjs/libs/render/ssrCache/manager.js +25 -11
  10. package/dist/cjs/libs/route/index.js +1 -3
  11. package/dist/cjs/libs/route/matcher.js +1 -5
  12. package/dist/cjs/libs/route/route.js +1 -10
  13. package/dist/cjs/libs/serverTiming.js +0 -3
  14. package/dist/cjs/renderHtml.js +0 -7
  15. package/dist/cjs/server/index.js +1 -7
  16. package/dist/cjs/server/modernServer.js +11 -21
  17. package/dist/cjs/workerServer.js +4 -8
  18. package/dist/esm/libs/context/context.js +66 -98
  19. package/dist/esm/libs/hook-api/base.js +36 -71
  20. package/dist/esm/libs/hook-api/index.worker.js +15 -29
  21. package/dist/esm/libs/hook-api/route.js +12 -27
  22. package/dist/esm/libs/hook-api/template.js +33 -61
  23. package/dist/esm/libs/render/ssr.js +8 -4
  24. package/dist/esm/libs/render/ssrCache/cacheMod.js +10 -18
  25. package/dist/esm/libs/render/ssrCache/index.js +40 -21
  26. package/dist/esm/libs/render/ssrCache/manager.js +149 -141
  27. package/dist/esm/libs/route/index.js +62 -96
  28. package/dist/esm/libs/route/matcher.js +58 -94
  29. package/dist/esm/libs/route/route.js +1 -10
  30. package/dist/esm/libs/serverTiming.js +8 -16
  31. package/dist/esm/renderHtml.js +22 -39
  32. package/dist/esm/server/index.js +307 -383
  33. package/dist/esm/server/modernServer.js +802 -936
  34. package/dist/esm/server/modernServerSplit.js +61 -86
  35. package/dist/esm/workerServer.js +87 -82
  36. package/dist/esm-node/libs/context/context.js +4 -8
  37. package/dist/esm-node/libs/hook-api/base.js +0 -11
  38. package/dist/esm-node/libs/hook-api/index.worker.js +0 -3
  39. package/dist/esm-node/libs/hook-api/route.js +0 -4
  40. package/dist/esm-node/libs/hook-api/template.js +0 -2
  41. package/dist/esm-node/libs/render/ssr.js +7 -3
  42. package/dist/esm-node/libs/render/ssrCache/cacheMod.js +0 -5
  43. package/dist/esm-node/libs/render/ssrCache/index.js +10 -3
  44. package/dist/esm-node/libs/render/ssrCache/manager.js +25 -11
  45. package/dist/esm-node/libs/route/index.js +1 -3
  46. package/dist/esm-node/libs/route/matcher.js +1 -5
  47. package/dist/esm-node/libs/route/route.js +1 -10
  48. package/dist/esm-node/libs/serverTiming.js +0 -3
  49. package/dist/esm-node/renderHtml.js +0 -7
  50. package/dist/esm-node/server/index.js +1 -7
  51. package/dist/esm-node/server/modernServer.js +11 -21
  52. package/dist/esm-node/workerServer.js +4 -8
  53. package/dist/types/libs/render/ssrCache/index.d.ts +2 -3
  54. package/dist/types/libs/render/ssrCache/manager.d.ts +7 -1
  55. package/dist/types/type.d.ts +1 -0
  56. package/package.json +8 -8
@@ -1,4 +1,3 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
1
  import { RouteMatcher } from "./matcher";
3
2
  class RouteMatchManager {
4
3
  // get all routes matches pathname
@@ -49,8 +48,7 @@ class RouteMatchManager {
49
48
  return bundles;
50
49
  }
51
50
  constructor() {
52
- _define_property(this, "matchers", void 0);
53
- _define_property(this, "specs", []);
51
+ this.specs = [];
54
52
  this.matchers = [];
55
53
  }
56
54
  }
@@ -1,4 +1,3 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
1
  import { match, pathToRegexp, compile } from "path-to-regexp";
3
2
  import { ModernRoute } from "./route";
4
3
  const removeTailSlash = (s) => s.replace(/\/+$/, "");
@@ -80,10 +79,7 @@ class RouteMatcher {
80
79
  }
81
80
  }
82
81
  constructor(spec) {
83
- _define_property(this, "spec", void 0);
84
- _define_property(this, "urlPath", "");
85
- _define_property(this, "urlMatcher", void 0);
86
- _define_property(this, "urlReg", void 0);
82
+ this.urlPath = "";
87
83
  this.spec = spec;
88
84
  this.setupUrlPath();
89
85
  }
@@ -1,15 +1,6 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
1
  class ModernRoute {
3
2
  constructor(routeSpec) {
4
- _define_property(this, "entryName", void 0);
5
- _define_property(this, "urlPath", void 0);
6
- _define_property(this, "entryPath", void 0);
7
- _define_property(this, "bundle", void 0);
8
- _define_property(this, "isApi", void 0);
9
- _define_property(this, "isSSR", void 0);
10
- _define_property(this, "isSPA", void 0);
11
- _define_property(this, "params", {});
12
- _define_property(this, "responseHeaders", void 0);
3
+ this.params = {};
13
4
  this.entryName = routeSpec.entryName || "";
14
5
  this.urlPath = routeSpec.urlPath;
15
6
  this.entryPath = routeSpec.entryPath || "";
@@ -1,4 +1,3 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
1
  const SERVER_TIMING = "Server-Timing";
3
2
  class ServerTiming {
4
3
  addServeTiming(name, dur, desc) {
@@ -9,8 +8,6 @@ class ServerTiming {
9
8
  return this;
10
9
  }
11
10
  constructor(res, meta) {
12
- _define_property(this, "meta", void 0);
13
- _define_property(this, "res", void 0);
14
11
  this.meta = meta;
15
12
  this.res = res;
16
13
  }
@@ -2,7 +2,6 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
2
2
  var __commonJS = (cb, mod) => function __require() {
3
3
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
4
4
  };
5
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
6
5
  import { OutgoingMessage } from "http";
7
6
  import { Readable } from "stream";
8
7
  import { Socket } from "net";
@@ -13,10 +12,6 @@ var require_renderHtml = __commonJS({
13
12
  class IncomingMessageLike extends Readable {
14
13
  constructor({ method, url, headers }) {
15
14
  super();
16
- _define_property(this, "headers", void 0);
17
- _define_property(this, "method", void 0);
18
- _define_property(this, "url", void 0);
19
- _define_property(this, "socket", void 0);
20
15
  this.socket = new Socket();
21
16
  this.headers = headers || {};
22
17
  this.headers.host = "localhost:8080";
@@ -33,8 +28,6 @@ var require_renderHtml = __commonJS({
33
28
  }
34
29
  constructor() {
35
30
  super();
36
- _define_property(this, "statusCode", void 0);
37
- _define_property(this, "data", void 0);
38
31
  this.statusCode = 200;
39
32
  this.data = [];
40
33
  }
@@ -1,4 +1,3 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
1
  import path from "path";
3
2
  import { fs, createLogger, SHARED_DIR, OUTPUT_CONFIG_FILE, dotenv, dotenvExpand, INTERNAL_SERVER_PLUGINS, ensureAbsolutePath } from "@modern-js/utils";
4
3
  import { serverManager, AppContext, ConfigContext, loadPlugins } from "@modern-js/server-core";
@@ -176,12 +175,7 @@ class Server {
176
175
  }
177
176
  }
178
177
  constructor(options) {
179
- _define_property(this, "options", void 0);
180
- _define_property(this, "serverImpl", createProdServer);
181
- _define_property(this, "server", void 0);
182
- _define_property(this, "app", void 0);
183
- _define_property(this, "runner", void 0);
184
- _define_property(this, "serverConfig", void 0);
178
+ this.serverImpl = createProdServer;
185
179
  options.logger = options.logger || createLogger({
186
180
  level: "warn"
187
181
  });
@@ -1,4 +1,3 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
1
  import { createServer } from "http";
3
2
  import path from "path";
4
3
  import { fs, isProd, isPromise, isWebOnly, mime, ROUTE_SPEC_FILE } from "@modern-js/utils";
@@ -327,7 +326,13 @@ class ModernServer {
327
326
  if (!renderResult) {
328
327
  return;
329
328
  }
330
- const { contentStream: responseStream } = renderResult;
329
+ const { contentStream: responseStream, headers } = renderResult;
330
+ if (headers) {
331
+ for (const name in headers) {
332
+ const value = headers[name];
333
+ res.setHeader(name, value);
334
+ }
335
+ }
331
336
  let { content: response } = renderResult;
332
337
  if (route.entryName && responseStream) {
333
338
  responseStream.pipe(res);
@@ -458,25 +463,10 @@ class ModernServer {
458
463
  context.res.end(createErrorDocument(status, text));
459
464
  }
460
465
  constructor({ pwd, config, routes, staticGenerate, logger, metrics, runMode, proxyTarget, appContext }) {
461
- _define_property(this, "pwd", void 0);
462
- _define_property(this, "distDir", void 0);
463
- _define_property(this, "workDir", void 0);
464
- _define_property(this, "router", void 0);
465
- _define_property(this, "conf", void 0);
466
- _define_property(this, "handlers", []);
467
- _define_property(this, "presetRoutes", void 0);
468
- _define_property(this, "runner", void 0);
469
- _define_property(this, "logger", void 0);
470
- _define_property(this, "metrics", void 0);
471
- _define_property(this, "runMode", void 0);
472
- _define_property(this, "proxyTarget", void 0);
473
- _define_property(this, "routeRenderHandler", void 0);
474
- _define_property(this, "staticGenerate", void 0);
475
- _define_property(this, "metaName", void 0);
476
- _define_property(this, "loaderHandler", null);
477
- _define_property(this, "frameWebHandler", null);
478
- _define_property(this, "frameAPIHandler", null);
479
- _define_property(this, "_handler", void 0);
466
+ this.handlers = [];
467
+ this.loaderHandler = null;
468
+ this.frameWebHandler = null;
469
+ this.frameAPIHandler = null;
480
470
  require("ignore-styles");
481
471
  this.pwd = pwd;
482
472
  this.distDir = path.resolve(pwd, config.output.path || "dist");
@@ -1,4 +1,3 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
1
  import { createAsyncPipeline } from "@modern-js/plugin";
3
2
  import { createAfterMatchContext, createAfterRenderContext, createMiddlewareContext } from "./libs/hook-api/index.worker";
4
3
  import { RouteMatchManager } from "./libs/route";
@@ -51,9 +50,6 @@ class ReturnResponse {
51
50
  return this;
52
51
  }
53
52
  constructor(body, status, headers = {}) {
54
- _define_property(this, "body", void 0);
55
- _define_property(this, "status", void 0);
56
- _define_property(this, "headers", void 0);
57
53
  this.body = body;
58
54
  this.status = status;
59
55
  this.headers = new Headers(headers);
@@ -103,7 +99,7 @@ const createHandler = (manifest) => {
103
99
  const route = pageMatch.generate(url.pathname);
104
100
  const hookContext = createWorkerHookContext(request.url, logger, metrics, reporter);
105
101
  const afterMatchHookContext = createAfterMatchContext(hookContext, entryName);
106
- page === null || page === void 0 ? void 0 : (_page_serverHooks = page.serverHooks) === null || _page_serverHooks === void 0 ? void 0 : (_page_serverHooks_afterMatch = _page_serverHooks.afterMatch) === null || _page_serverHooks_afterMatch === void 0 ? void 0 : _page_serverHooks_afterMatch.call(_page_serverHooks, afterMatchHookContext, () => void 0);
102
+ await (page === null || page === void 0 ? void 0 : (_page_serverHooks = page.serverHooks) === null || _page_serverHooks === void 0 ? void 0 : (_page_serverHooks_afterMatch = _page_serverHooks.afterMatch) === null || _page_serverHooks_afterMatch === void 0 ? void 0 : _page_serverHooks_afterMatch.call(_page_serverHooks, afterMatchHookContext, () => void 0));
107
103
  if (checkIsSent(hookContext)) {
108
104
  return new ReturnResponse(hookContext.res.body || "Unkown body", hookContext.res.status, hookContext.res.headers);
109
105
  }
@@ -152,7 +148,7 @@ const createHandler = (manifest) => {
152
148
  };
153
149
  const body = await page.serverRender(serverRenderContext);
154
150
  const afterRenderHookContext = createAfterRenderContext(hookContext, route, body);
155
- (_page_serverHooks2 = page.serverHooks) === null || _page_serverHooks2 === void 0 ? void 0 : (_page_serverHooks_afterRender = _page_serverHooks2.afterRender) === null || _page_serverHooks_afterRender === void 0 ? void 0 : _page_serverHooks_afterRender.call(_page_serverHooks2, afterRenderHookContext, () => void 0);
151
+ await ((_page_serverHooks2 = page.serverHooks) === null || _page_serverHooks2 === void 0 ? void 0 : (_page_serverHooks_afterRender = _page_serverHooks2.afterRender) === null || _page_serverHooks_afterRender === void 0 ? void 0 : _page_serverHooks_afterRender.call(_page_serverHooks2, afterRenderHookContext, () => void 0));
156
152
  if (checkIsSent(hookContext)) {
157
153
  return new ReturnResponse(hookContext.res.body || "Unkown body", hookContext.res.status, hookContext.res.headers);
158
154
  }
@@ -211,7 +207,7 @@ function createWorkerHookContext(url, logger, metrics, reporter) {
211
207
  };
212
208
  }
213
209
  let appliedMiddlewares = false;
214
- function applyMiddlewares(ctx, middleware) {
210
+ async function applyMiddlewares(ctx, middleware) {
215
211
  if (middleware) {
216
212
  const middlewares = (() => {
217
213
  if (Array.isArray(middleware)) {
@@ -228,7 +224,7 @@ function applyMiddlewares(ctx, middleware) {
228
224
  });
229
225
  appliedMiddlewares = true;
230
226
  }
231
- middlewarePipeline.run(ctx, {
227
+ await middlewarePipeline.run(ctx, {
232
228
  onLast: () => void 0
233
229
  });
234
230
  }
@@ -1,7 +1,6 @@
1
- /// <reference types="node" />
2
1
  /// <reference types="node/http" />
3
2
  /// <reference types="dist/types/type" />
4
3
  import { IncomingMessage } from 'http';
5
- import { type Readable } from 'stream';
6
4
  import { RenderFunction, SSRServerContext } from '../type';
7
- export declare function ssrCache(req: IncomingMessage, render: RenderFunction, ssrContext: SSRServerContext): Promise<string | Readable>;
5
+ import { CacheResult } from './manager';
6
+ export declare function ssrCache(req: IncomingMessage, render: RenderFunction, ssrContext: SSRServerContext): Promise<CacheResult>;
@@ -5,10 +5,16 @@ import { IncomingMessage } from 'http';
5
5
  import { Readable } from 'stream';
6
6
  import { CacheControl, Container } from '@modern-js/types';
7
7
  import { RenderFunction, SSRServerContext } from '../type';
8
+ type CacheStatus = 'hit' | 'stale' | 'expired' | 'miss';
9
+ export type CacheResult = {
10
+ data: string | Readable;
11
+ status?: CacheStatus;
12
+ };
8
13
  export declare class CacheManager {
9
14
  private container;
10
15
  constructor(container: Container<string, string>);
11
- getCacheResult(req: IncomingMessage, cacheControl: CacheControl, render: RenderFunction, ssrContext: SSRServerContext): Promise<string | Readable>;
16
+ getCacheResult(req: IncomingMessage, cacheControl: CacheControl, render: RenderFunction, ssrContext: SSRServerContext): Promise<CacheResult>;
12
17
  private processCache;
13
18
  private computedKey;
14
19
  }
20
+ export {};
@@ -49,6 +49,7 @@ export type RenderResult = {
49
49
  contentType: string;
50
50
  contentStream?: Readable;
51
51
  statusCode?: number;
52
+ headers?: Record<string, string>;
52
53
  redirect?: boolean;
53
54
  };
54
55
  export type ConfWithBFF = {
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.47.1",
18
+ "version": "2.48.1",
19
19
  "jsnext:source": "./src/index.ts",
20
20
  "types": "./dist/types/index.d.ts",
21
21
  "main": "./dist/cjs/index.js",
@@ -74,10 +74,10 @@
74
74
  "node-html-parser": "^6.1.5",
75
75
  "path-to-regexp": "^6.2.0",
76
76
  "serve-static": "^1.14.1",
77
- "@modern-js/plugin": "2.47.1",
78
- "@modern-js/server-core": "2.47.1",
79
- "@modern-js/runtime-utils": "2.47.1",
80
- "@modern-js/utils": "2.47.1"
77
+ "@modern-js/plugin": "2.48.1",
78
+ "@modern-js/server-core": "2.48.1",
79
+ "@modern-js/utils": "2.48.1",
80
+ "@modern-js/runtime-utils": "2.48.1"
81
81
  },
82
82
  "devDependencies": {
83
83
  "@types/cookie": "0.5.1",
@@ -95,9 +95,9 @@
95
95
  "portfinder": "^1.0.28",
96
96
  "typescript": "^5",
97
97
  "ws": "^8.13.0",
98
- "@scripts/build": "2.47.1",
99
- "@modern-js/types": "2.47.1",
100
- "@scripts/jest-config": "2.47.1"
98
+ "@modern-js/types": "2.48.1",
99
+ "@scripts/build": "2.48.1",
100
+ "@scripts/jest-config": "2.48.1"
101
101
  },
102
102
  "sideEffects": false,
103
103
  "publishConfig": {