@modern-js/prod-server 2.40.0 → 2.41.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.
@@ -29,6 +29,7 @@ var import_hook_api = require("./libs/hook-api/index.worker");
29
29
  var import_route = require("./libs/route");
30
30
  var import_metrics = require("./libs/metrics");
31
31
  var import_reporter = require("./libs/reporter");
32
+ const calcFallback = (metaName) => `x-${metaName.split(/[-_]/)[0]}-ssr-fallback`;
32
33
  class ReturnResponse {
33
34
  /**
34
35
  * Iterate a Object
@@ -91,7 +92,8 @@ const checkIsSent = (context) => {
91
92
  const middlewarePipeline = (0, import_plugin.createAsyncPipeline)();
92
93
  const createHandler = (manifest) => {
93
94
  const routeMgr = new import_route.RouteMatchManager();
94
- const { pages, routes, options: manifestOpts = {} } = manifest;
95
+ const { pages, routes, options: manifestOpts } = manifest;
96
+ const { metaName = "modern-js", forceCSR = false } = manifestOpts || {};
95
97
  routeMgr.reset(routes);
96
98
  return async (options) => {
97
99
  var _page_serverHooks_afterMatch, _page_serverHooks;
@@ -103,7 +105,7 @@ const createHandler = (manifest) => {
103
105
  }
104
106
  const entryName = pageMatch.spec.urlPath;
105
107
  const page = pages[entryName];
106
- if (manifestOpts.forceCSR && url.searchParams.get("csr") === "1") {
108
+ if (forceCSR && url.searchParams.get("csr") === "1") {
107
109
  return createResponse(page.template);
108
110
  }
109
111
  const logger = (0, import_logger.createLogger)({
@@ -125,6 +127,9 @@ const createHandler = (manifest) => {
125
127
  if (checkIsSent(hookContext)) {
126
128
  return new ReturnResponse(hookContext.res.body || "Unkown body", hookContext.res.status, hookContext.res.headers);
127
129
  }
130
+ if (forceCSR && middlewarsHookContext.request.headers[calcFallback(metaName)]) {
131
+ return createResponse(page.template);
132
+ }
128
133
  const responseLike = {
129
134
  headers: {},
130
135
  statusCode: 200,
@@ -217,6 +222,7 @@ function createWorkerHookContext(url, logger, metrics, reporter) {
217
222
  reporter
218
223
  };
219
224
  }
225
+ let appliedMiddlewares = false;
220
226
  function applyMiddlewares(ctx, middleware) {
221
227
  if (middleware) {
222
228
  const middlewares = (() => {
@@ -228,9 +234,12 @@ function applyMiddlewares(ctx, middleware) {
228
234
  ];
229
235
  }
230
236
  })();
231
- middlewares.forEach((middleware2) => {
232
- middlewarePipeline.use(middleware2);
233
- });
237
+ if (!appliedMiddlewares) {
238
+ middlewares.forEach((middleware2) => {
239
+ middlewarePipeline.use(middleware2);
240
+ });
241
+ appliedMiddlewares = true;
242
+ }
234
243
  middlewarePipeline.run(ctx, {
235
244
  onLast: () => void 0
236
245
  });
@@ -10,6 +10,9 @@ import { createAfterMatchContext, createAfterRenderContext, createMiddlewareCont
10
10
  import { RouteMatchManager } from "./libs/route";
11
11
  import { metrics as defaultMetrics } from "./libs/metrics";
12
12
  import { defaultReporter } from "./libs/reporter";
13
+ var calcFallback = function(metaName) {
14
+ return "x-".concat(metaName.split(/[-_]/)[0], "-ssr-fallback");
15
+ };
13
16
  var ReturnResponse = /* @__PURE__ */ function() {
14
17
  "use strict";
15
18
  function ReturnResponse2(body, status) {
@@ -88,10 +91,11 @@ var checkIsSent = function(context) {
88
91
  var middlewarePipeline = createAsyncPipeline();
89
92
  var createHandler = function(manifest) {
90
93
  var routeMgr = new RouteMatchManager();
91
- var pages = manifest.pages, routes = manifest.routes, tmp = manifest.options, manifestOpts = tmp === void 0 ? {} : tmp;
94
+ var pages = manifest.pages, routes = manifest.routes, manifestOpts = manifest.options;
95
+ var _ref = manifestOpts || {}, _ref_metaName = _ref.metaName, metaName = _ref_metaName === void 0 ? "modern-js" : _ref_metaName, _ref_forceCSR = _ref.forceCSR, forceCSR = _ref_forceCSR === void 0 ? false : _ref_forceCSR;
92
96
  routeMgr.reset(routes);
93
97
  return function() {
94
- var _ref = _async_to_generator(function(options) {
98
+ var _ref2 = _async_to_generator(function(options) {
95
99
  var _page_serverHooks_afterMatch, _page_serverHooks, request, loadableStats, routeManifest, url, pageMatch, entryName, page, logger, metrics, reporter, hookContext, afterMatchHookContext, _page_serverHooks1, _page_serverHooks_afterRender, _page_serverHooks2, middlewarsHookContext, responseLike, params, baseUrl, serverRenderContext, body, afterRenderHookContext, e;
96
100
  function createServerRequest(url2, baseUrl2, request2, params2) {
97
101
  var pathname = url2.pathname, host = url2.host, searchParams = url2.searchParams;
@@ -125,7 +129,7 @@ var createHandler = function(manifest) {
125
129
  }
126
130
  entryName = pageMatch.spec.urlPath;
127
131
  page = pages[entryName];
128
- if (manifestOpts.forceCSR && url.searchParams.get("csr") === "1") {
132
+ if (forceCSR && url.searchParams.get("csr") === "1") {
129
133
  return [
130
134
  2,
131
135
  createResponse(page.template)
@@ -168,6 +172,12 @@ var createHandler = function(manifest) {
168
172
  new ReturnResponse(hookContext.res.body || "Unkown body", hookContext.res.status, hookContext.res.headers)
169
173
  ];
170
174
  }
175
+ if (forceCSR && middlewarsHookContext.request.headers[calcFallback(metaName)]) {
176
+ return [
177
+ 2,
178
+ createResponse(page.template)
179
+ ];
180
+ }
171
181
  responseLike = {
172
182
  headers: {},
173
183
  statusCode: 200,
@@ -238,7 +248,7 @@ var createHandler = function(manifest) {
238
248
  });
239
249
  });
240
250
  return function(options) {
241
- return _ref.apply(this, arguments);
251
+ return _ref2.apply(this, arguments);
242
252
  };
243
253
  }();
244
254
  };
@@ -267,6 +277,7 @@ function createWorkerHookContext(url, logger, metrics, reporter) {
267
277
  reporter
268
278
  };
269
279
  }
280
+ var appliedMiddlewares = false;
270
281
  function applyMiddlewares(ctx, middleware) {
271
282
  if (middleware) {
272
283
  var middlewares = function() {
@@ -278,9 +289,12 @@ function applyMiddlewares(ctx, middleware) {
278
289
  ];
279
290
  }
280
291
  }();
281
- middlewares.forEach(function(middleware2) {
282
- middlewarePipeline.use(middleware2);
283
- });
292
+ if (!appliedMiddlewares) {
293
+ middlewares.forEach(function(middleware2) {
294
+ middlewarePipeline.use(middleware2);
295
+ });
296
+ appliedMiddlewares = true;
297
+ }
284
298
  middlewarePipeline.run(ctx, {
285
299
  onLast: function() {
286
300
  return void 0;
@@ -5,6 +5,7 @@ import { createAfterMatchContext, createAfterRenderContext, createMiddlewareCont
5
5
  import { RouteMatchManager } from "./libs/route";
6
6
  import { metrics as defaultMetrics } from "./libs/metrics";
7
7
  import { defaultReporter } from "./libs/reporter";
8
+ const calcFallback = (metaName) => `x-${metaName.split(/[-_]/)[0]}-ssr-fallback`;
8
9
  class ReturnResponse {
9
10
  /**
10
11
  * Iterate a Object
@@ -67,7 +68,8 @@ const checkIsSent = (context) => {
67
68
  const middlewarePipeline = createAsyncPipeline();
68
69
  const createHandler = (manifest) => {
69
70
  const routeMgr = new RouteMatchManager();
70
- const { pages, routes, options: manifestOpts = {} } = manifest;
71
+ const { pages, routes, options: manifestOpts } = manifest;
72
+ const { metaName = "modern-js", forceCSR = false } = manifestOpts || {};
71
73
  routeMgr.reset(routes);
72
74
  return async (options) => {
73
75
  var _page_serverHooks_afterMatch, _page_serverHooks;
@@ -79,7 +81,7 @@ const createHandler = (manifest) => {
79
81
  }
80
82
  const entryName = pageMatch.spec.urlPath;
81
83
  const page = pages[entryName];
82
- if (manifestOpts.forceCSR && url.searchParams.get("csr") === "1") {
84
+ if (forceCSR && url.searchParams.get("csr") === "1") {
83
85
  return createResponse(page.template);
84
86
  }
85
87
  const logger = createLogger({
@@ -101,6 +103,9 @@ const createHandler = (manifest) => {
101
103
  if (checkIsSent(hookContext)) {
102
104
  return new ReturnResponse(hookContext.res.body || "Unkown body", hookContext.res.status, hookContext.res.headers);
103
105
  }
106
+ if (forceCSR && middlewarsHookContext.request.headers[calcFallback(metaName)]) {
107
+ return createResponse(page.template);
108
+ }
104
109
  const responseLike = {
105
110
  headers: {},
106
111
  statusCode: 200,
@@ -193,6 +198,7 @@ function createWorkerHookContext(url, logger, metrics, reporter) {
193
198
  reporter
194
199
  };
195
200
  }
201
+ let appliedMiddlewares = false;
196
202
  function applyMiddlewares(ctx, middleware) {
197
203
  if (middleware) {
198
204
  const middlewares = (() => {
@@ -204,9 +210,12 @@ function applyMiddlewares(ctx, middleware) {
204
210
  ];
205
211
  }
206
212
  })();
207
- middlewares.forEach((middleware2) => {
208
- middlewarePipeline.use(middleware2);
209
- });
213
+ if (!appliedMiddlewares) {
214
+ middlewares.forEach((middleware2) => {
215
+ middlewarePipeline.use(middleware2);
216
+ });
217
+ appliedMiddlewares = true;
218
+ }
210
219
  middlewarePipeline.run(ctx, {
211
220
  onLast: () => void 0
212
221
  });
@@ -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/x-wr1AtAisepvCMvqMiIW/src/type" />
5
+ /// <reference types=".dts-temp/MyKuaUY5TchUfAps6LPPb/src/type" />
6
6
  import { IncomingMessage, ServerResponse } from 'http';
7
7
  import qs from 'querystring';
8
8
  import type { ModernServerContext as ModernServerContextInterface, Reporter as ModernServerReporter, ServerTiming as ModernServerTiming } from '@modern-js/types';
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node/http" />
3
- /// <reference types=".dts-temp/x-wr1AtAisepvCMvqMiIW/src/type" />
3
+ /// <reference types=".dts-temp/MyKuaUY5TchUfAps6LPPb/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;
@@ -52,6 +52,7 @@ export type Manifest = {
52
52
  routes: ModernRouteInterface[];
53
53
  options?: {
54
54
  forceCSR?: boolean;
55
+ metaName?: string;
55
56
  };
56
57
  };
57
58
  export declare const createHandler: (manifest: Manifest) => (options: HandlerOptions) => Promise<ReturnResponse>;
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.40.0",
18
+ "version": "2.41.0",
19
19
  "jsnext:source": "./src/index.ts",
20
20
  "types": "./dist/types/index.d.ts",
21
21
  "main": "./dist/cjs/index.js",
@@ -63,24 +63,24 @@
63
63
  }
64
64
  },
65
65
  "dependencies": {
66
- "@swc/helpers": "0.5.1",
67
- "cookie": "^0.4.2",
66
+ "@swc/helpers": "0.5.3",
67
+ "cookie": "0.5.0",
68
68
  "etag": "^1.8.1",
69
69
  "fresh": "^0.5.2",
70
- "http-proxy-middleware": "^2.0.1",
70
+ "http-proxy-middleware": "^2.0.4",
71
71
  "ignore-styles": "^5.0.1",
72
72
  "lru-cache": "^6.0.0",
73
73
  "merge-deep": "^3.0.3",
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.40.0",
78
- "@modern-js/server-core": "2.40.0",
79
- "@modern-js/utils": "2.40.0",
80
- "@modern-js/runtime-utils": "2.40.0"
77
+ "@modern-js/plugin": "2.41.0",
78
+ "@modern-js/server-core": "2.41.0",
79
+ "@modern-js/utils": "2.41.0",
80
+ "@modern-js/runtime-utils": "2.41.0"
81
81
  },
82
82
  "devDependencies": {
83
- "@types/cookie": "^0.4.1",
83
+ "@types/cookie": "0.5.1",
84
84
  "@types/etag": "^1.8.1",
85
85
  "@types/fresh": "^0.5.0",
86
86
  "@types/jest": "^29",
@@ -89,17 +89,17 @@
89
89
  "@types/node": "^14",
90
90
  "@types/serve-static": "^1.13.10",
91
91
  "@types/ws": "^8.5.5",
92
- "axios": "^1.2.1",
92
+ "axios": "^1.6.0",
93
93
  "jest": "^29",
94
94
  "memfs": "^3.5.1",
95
95
  "node-mocks-http": "^1.11.0",
96
96
  "portfinder": "^1.0.28",
97
97
  "typescript": "^5",
98
98
  "ws": "^8.13.0",
99
- "@modern-js/server-core": "2.40.0",
100
- "@modern-js/types": "2.40.0",
101
- "@scripts/build": "2.40.0",
102
- "@scripts/jest-config": "2.40.0"
99
+ "@modern-js/server-core": "2.41.0",
100
+ "@scripts/build": "2.41.0",
101
+ "@modern-js/types": "2.41.0",
102
+ "@scripts/jest-config": "2.41.0"
103
103
  },
104
104
  "sideEffects": false,
105
105
  "publishConfig": {