@lwrjs/core 0.12.0-alpha.17 → 0.12.0-alpha.18

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.
@@ -27,16 +27,20 @@ __export(exports, {
27
27
  requestProcessorMiddleware: () => requestProcessorMiddleware
28
28
  });
29
29
  var import_diagnostics = __toModule(require("@lwrjs/diagnostics"));
30
+ var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
30
31
  var MRT_REQUEST_CLASS = "X-Mobify-Request-Class";
31
- var FORWARDED = "forwarded";
32
32
  var MRT_REQUEST_CLASS_KEY = MRT_REQUEST_CLASS.toLowerCase();
33
33
  function requestProcessorMiddleware(app, context) {
34
34
  const {basePath} = context.runtimeEnvironment;
35
35
  app.use(async (req, res, next) => {
36
36
  let requestClass;
37
- let forwarded;
37
+ let requestDepth;
38
38
  if (req.headers) {
39
39
  if (import_diagnostics.logger.isDebugEnabled()) {
40
+ import_diagnostics.logger.debug({
41
+ label: `request-processor-middleware`,
42
+ message: `Request: ${req.originalUrl}`
43
+ });
40
44
  for (const headerName in req.headers) {
41
45
  import_diagnostics.logger.debug({
42
46
  label: `request-processor-middleware`,
@@ -45,11 +49,14 @@ function requestProcessorMiddleware(app, context) {
45
49
  }
46
50
  }
47
51
  requestClass = req.headers[MRT_REQUEST_CLASS_KEY];
48
- forwarded = req.headers[FORWARDED];
52
+ requestDepth = (0, import_shared_utils.parseRequestDepthHeader)(req.headers);
49
53
  }
50
- if (process.env.BUNDLE_ID && (!req.headers || typeof forwarded !== "string" || forwarded.indexOf("http") !== 0)) {
51
- res.status(403).send("Access to this site is restricted to Salesforce-managed domains only.");
52
- return;
54
+ if (requestDepth && requestDepth > 1) {
55
+ import_diagnostics.logger.warn({
56
+ label: "request-processor-middleware",
57
+ message: "Lambda SSR request cycle detected"
58
+ });
59
+ return res.status(400).send("Request depth limit reached");
53
60
  }
54
61
  if (req.headers && typeof requestClass === "string") {
55
62
  const parsedRequestClass = parseRequestClass(requestClass);
@@ -7,17 +7,21 @@
7
7
  *
8
8
  */
9
9
  import { logger } from '@lwrjs/diagnostics';
10
+ import { parseRequestDepthHeader } from '@lwrjs/shared-utils';
10
11
  const MRT_REQUEST_CLASS = 'X-Mobify-Request-Class';
11
- const FORWARDED = 'forwarded';
12
12
  const MRT_REQUEST_CLASS_KEY = MRT_REQUEST_CLASS.toLowerCase();
13
13
  export function requestProcessorMiddleware(app, context) {
14
14
  const { basePath } = context.runtimeEnvironment;
15
15
  app.use(async (req, res, next) => {
16
16
  let requestClass;
17
- let forwarded;
17
+ let requestDepth;
18
18
  if (req.headers) {
19
19
  // If debug print log all the headers
20
20
  if (logger.isDebugEnabled()) {
21
+ logger.debug({
22
+ label: `request-processor-middleware`,
23
+ message: `Request: ${req.originalUrl}`,
24
+ });
21
25
  // Loop through and print each header
22
26
  for (const headerName in req.headers) {
23
27
  logger.debug({
@@ -27,14 +31,16 @@ export function requestProcessorMiddleware(app, context) {
27
31
  }
28
32
  }
29
33
  requestClass = req.headers[MRT_REQUEST_CLASS_KEY];
30
- forwarded = req.headers[FORWARDED];
34
+ requestDepth = parseRequestDepthHeader(req.headers);
31
35
  }
32
- // For now if we do not have a forwarded header do not allow us to render this page
33
- // BUNDLE_ID is set when on the MRT ENV
34
- if (process.env.BUNDLE_ID &&
35
- (!req.headers || typeof forwarded !== 'string' || forwarded.indexOf('http') !== 0)) {
36
- res.status(403).send('Access to this site is restricted to Salesforce-managed domains only.');
37
- return;
36
+ // TODO Clean up once we have a long term solution
37
+ if (requestDepth && requestDepth > 1) {
38
+ logger.warn({
39
+ label: 'request-processor-middleware',
40
+ message: 'Lambda SSR request cycle detected',
41
+ });
42
+ // Return 400 Too Many Requests status
43
+ return res.status(400).send('Request depth limit reached');
38
44
  }
39
45
  if (req.headers && typeof requestClass === 'string') {
40
46
  const parsedRequestClass = parseRequestClass(requestClass);
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "0.12.0-alpha.17",
7
+ "version": "0.12.0-alpha.18",
8
8
  "homepage": "https://developer.salesforce.com/docs/platform/lwr/overview",
9
9
  "repository": {
10
10
  "type": "git",
@@ -43,34 +43,34 @@
43
43
  "build": "tsc -b"
44
44
  },
45
45
  "dependencies": {
46
- "@lwrjs/app-service": "0.12.0-alpha.17",
47
- "@lwrjs/asset-registry": "0.12.0-alpha.17",
48
- "@lwrjs/asset-transformer": "0.12.0-alpha.17",
49
- "@lwrjs/base-view-provider": "0.12.0-alpha.17",
50
- "@lwrjs/base-view-transformer": "0.12.0-alpha.17",
51
- "@lwrjs/client-modules": "0.12.0-alpha.17",
52
- "@lwrjs/config": "0.12.0-alpha.17",
53
- "@lwrjs/diagnostics": "0.12.0-alpha.17",
54
- "@lwrjs/esbuild": "0.12.0-alpha.17",
55
- "@lwrjs/fs-asset-provider": "0.12.0-alpha.17",
56
- "@lwrjs/fs-watch": "0.12.0-alpha.17",
57
- "@lwrjs/html-view-provider": "0.12.0-alpha.17",
58
- "@lwrjs/instrumentation": "0.12.0-alpha.17",
59
- "@lwrjs/loader": "0.12.0-alpha.17",
60
- "@lwrjs/lwc-module-provider": "0.12.0-alpha.17",
61
- "@lwrjs/lwc-ssr": "0.12.0-alpha.17",
62
- "@lwrjs/markdown-view-provider": "0.12.0-alpha.17",
63
- "@lwrjs/module-bundler": "0.12.0-alpha.17",
64
- "@lwrjs/module-registry": "0.12.0-alpha.17",
65
- "@lwrjs/npm-module-provider": "0.12.0-alpha.17",
66
- "@lwrjs/nunjucks-view-provider": "0.12.0-alpha.17",
67
- "@lwrjs/o11y": "0.12.0-alpha.17",
68
- "@lwrjs/resource-registry": "0.12.0-alpha.17",
69
- "@lwrjs/router": "0.12.0-alpha.17",
70
- "@lwrjs/server": "0.12.0-alpha.17",
71
- "@lwrjs/shared-utils": "0.12.0-alpha.17",
72
- "@lwrjs/static": "0.12.0-alpha.17",
73
- "@lwrjs/view-registry": "0.12.0-alpha.17",
46
+ "@lwrjs/app-service": "0.12.0-alpha.18",
47
+ "@lwrjs/asset-registry": "0.12.0-alpha.18",
48
+ "@lwrjs/asset-transformer": "0.12.0-alpha.18",
49
+ "@lwrjs/base-view-provider": "0.12.0-alpha.18",
50
+ "@lwrjs/base-view-transformer": "0.12.0-alpha.18",
51
+ "@lwrjs/client-modules": "0.12.0-alpha.18",
52
+ "@lwrjs/config": "0.12.0-alpha.18",
53
+ "@lwrjs/diagnostics": "0.12.0-alpha.18",
54
+ "@lwrjs/esbuild": "0.12.0-alpha.18",
55
+ "@lwrjs/fs-asset-provider": "0.12.0-alpha.18",
56
+ "@lwrjs/fs-watch": "0.12.0-alpha.18",
57
+ "@lwrjs/html-view-provider": "0.12.0-alpha.18",
58
+ "@lwrjs/instrumentation": "0.12.0-alpha.18",
59
+ "@lwrjs/loader": "0.12.0-alpha.18",
60
+ "@lwrjs/lwc-module-provider": "0.12.0-alpha.18",
61
+ "@lwrjs/lwc-ssr": "0.12.0-alpha.18",
62
+ "@lwrjs/markdown-view-provider": "0.12.0-alpha.18",
63
+ "@lwrjs/module-bundler": "0.12.0-alpha.18",
64
+ "@lwrjs/module-registry": "0.12.0-alpha.18",
65
+ "@lwrjs/npm-module-provider": "0.12.0-alpha.18",
66
+ "@lwrjs/nunjucks-view-provider": "0.12.0-alpha.18",
67
+ "@lwrjs/o11y": "0.12.0-alpha.18",
68
+ "@lwrjs/resource-registry": "0.12.0-alpha.18",
69
+ "@lwrjs/router": "0.12.0-alpha.18",
70
+ "@lwrjs/server": "0.12.0-alpha.18",
71
+ "@lwrjs/shared-utils": "0.12.0-alpha.18",
72
+ "@lwrjs/static": "0.12.0-alpha.18",
73
+ "@lwrjs/view-registry": "0.12.0-alpha.18",
74
74
  "chokidar": "^3.6.0",
75
75
  "esbuild": "^0.9.7",
76
76
  "fs-extra": "^11.1.1",
@@ -80,7 +80,7 @@
80
80
  "ws": "^8.16.0"
81
81
  },
82
82
  "devDependencies": {
83
- "@lwrjs/types": "0.12.0-alpha.17",
83
+ "@lwrjs/types": "0.12.0-alpha.18",
84
84
  "@types/ws": "^8.5.10",
85
85
  "mock-fs": "^5.2.0"
86
86
  },
@@ -93,5 +93,5 @@
93
93
  "volta": {
94
94
  "extends": "../../../package.json"
95
95
  },
96
- "gitHead": "d4ddfdd64f762edafe22d4d1bd08340cc761747c"
96
+ "gitHead": "3771f90b20af174012680ea95d1d84aa3c39b5fc"
97
97
  }