@lwrjs/core 0.15.0-alpha.17 → 0.15.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.
@@ -109,9 +109,9 @@ var LwrApp = class {
109
109
  this.config = appConfig;
110
110
  this.runtimeEnvironment = runtimeEnvironment;
111
111
  this.globalData = globalData;
112
- const {basePath, serverType} = this.config;
112
+ const {basePath, serverType, caseSensitiveRoutes} = this.config;
113
113
  this.serverType = serverType;
114
- this.app = (0, import_server.createInternalServer)(serverType, {basePath});
114
+ this.app = (0, import_server.createInternalServer)(serverType, {basePath, caseSensitiveRoutes});
115
115
  this.server = this.app.createHttpServer();
116
116
  this.use = this.app.use.bind(this.app);
117
117
  this.all = this.app.all.bind(this.app);
@@ -84,7 +84,7 @@ function createBundleMiddleware(context) {
84
84
  if (signature !== import_shared_utils.LATEST_SIGNATURE) {
85
85
  res.setHeader("Cache-control", "public, max-age=31536000, immutable");
86
86
  }
87
- res.status(200).type("application/javascript").send(bundleDefinition.code);
87
+ res.status(200).type("application/javascript").send(await bundleDefinition.getCode());
88
88
  };
89
89
  }
90
90
  function createSourceMapMiddleware(context) {
@@ -24,6 +24,7 @@ var __toModule = (module2) => {
24
24
  // packages/@lwrjs/core/src/middleware/view-middleware.ts
25
25
  __markAsModule(exports);
26
26
  __export(exports, {
27
+ convertMetricsToArrayOfStrings: () => convertMetricsToArrayOfStrings,
27
28
  viewMiddleware: () => viewMiddleware
28
29
  });
29
30
  var import_diagnostics = __toModule(require("@lwrjs/diagnostics"));
@@ -32,6 +33,7 @@ var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
32
33
  var import_instrumentation = __toModule(require("@lwrjs/instrumentation"));
33
34
  var import_error_handling = __toModule(require("./utils/error-handling.cjs"));
34
35
  var import_view_registry = __toModule(require("@lwrjs/view-registry"));
36
+ var import_aws_exporter = __toModule(require("@lwrjs/instrumentation/aws-exporter"));
35
37
  function createViewMiddleware(route, errorRoutes, context, viewHandler) {
36
38
  const errorRoute = errorRoutes.find((route2) => route2.status === 500);
37
39
  const appConfig = context.appConfig;
@@ -63,12 +65,13 @@ function createViewMiddleware(route, errorRoutes, context, viewHandler) {
63
65
  params: viewRequest.params,
64
66
  query: viewRequest.query,
65
67
  cookie: req.headers?.cookie,
66
- coreProxy: req.getCoreProxy(route.bootstrap?.proxyForSSR)
68
+ coreProxy: req.getCoreProxy(appConfig.coreProxy ?? void 0, route.bootstrap?.proxyForSSR)
67
69
  };
68
70
  const resolve = req.isJsonRequest() ? viewHandler.getViewJson : viewHandler.getViewContent;
69
71
  let viewResponse;
70
72
  let resolvedRoute;
71
73
  let traceId;
74
+ let reqSpan;
72
75
  try {
73
76
  viewResponse = await (0, import_instrumentation.getTracer)().trace({
74
77
  name: import_instrumentation.RequestHandlerSpan.GetView,
@@ -81,6 +84,7 @@ function createViewMiddleware(route, errorRoutes, context, viewHandler) {
81
84
  }
82
85
  }, (span) => {
83
86
  traceId = span.traceId;
87
+ reqSpan = span.reqSpan;
84
88
  return resolve.call(viewHandler, viewRequest, route, runtimeEnvironment, runtimeParams);
85
89
  });
86
90
  resolvedRoute = route;
@@ -115,6 +119,11 @@ function createViewMiddleware(route, errorRoutes, context, viewHandler) {
115
119
  }
116
120
  if (traceId?.length) {
117
121
  res.setHeader("x-trace-id", traceId);
122
+ if (reqSpan?.status?.code === 0) {
123
+ res.set({
124
+ "X-Custom-Lwr-Metric": convertMetricsToArrayOfStrings((0, import_aws_exporter.convertToReadableSpan)(reqSpan))
125
+ });
126
+ }
118
127
  }
119
128
  let status = resolvedRoute.status || viewResponse.status || 200;
120
129
  const redirect = viewResponse.metadata?.viewDefinition?.redirect;
@@ -240,3 +249,16 @@ function addRedirectQueryParam(redirectUrl, depth) {
240
249
  url.searchParams.set(import_shared_utils.REQUEST_DEPTH_KEY, String(depth + 1));
241
250
  return url.toString().replace(fakeOrigin, "");
242
251
  }
252
+ function convertMetricsToArrayOfStrings(span) {
253
+ const requiredMetrics = ["traceId", "name", "attributes", "duration"];
254
+ return requiredMetrics.reduce((metricString, prop) => {
255
+ if (metricString && !metricString.endsWith("; ")) {
256
+ metricString += "; ";
257
+ }
258
+ if (span[prop]) {
259
+ const propValue = typeof span[prop] === "object" ? JSON.stringify(span[prop]) : span[prop];
260
+ metricString += `${prop}: ${propValue}`;
261
+ }
262
+ return metricString;
263
+ }, "");
264
+ }
package/build/es/index.js CHANGED
@@ -98,9 +98,9 @@ export class LwrApp {
98
98
  this.config = appConfig;
99
99
  this.runtimeEnvironment = runtimeEnvironment;
100
100
  this.globalData = globalData;
101
- const { basePath, serverType } = this.config;
101
+ const { basePath, serverType, caseSensitiveRoutes } = this.config;
102
102
  this.serverType = serverType;
103
- this.app = createInternalServer(serverType, { basePath });
103
+ this.app = createInternalServer(serverType, { basePath, caseSensitiveRoutes });
104
104
  this.server = this.app.createHttpServer();
105
105
  this.use = this.app.use.bind(this.app);
106
106
  this.all = this.app.all.bind(this.app);
@@ -56,7 +56,9 @@ function createBundleMiddleware(context) {
56
56
  if (signature !== LATEST_SIGNATURE) {
57
57
  res.setHeader('Cache-control', 'public, max-age=31536000, immutable');
58
58
  }
59
- res.status(200).type('application/javascript').send(bundleDefinition.code);
59
+ res.status(200)
60
+ .type('application/javascript')
61
+ .send(await bundleDefinition.getCode());
60
62
  };
61
63
  }
62
64
  function createSourceMapMiddleware(context) {
@@ -1,3 +1,4 @@
1
1
  import type { InternalAppServer, ServerContext, ServerTypes } from '@lwrjs/types';
2
2
  export declare function viewMiddleware<T extends ServerTypes>(app: InternalAppServer<T>, context: ServerContext): void;
3
+ export declare function convertMetricsToArrayOfStrings(span: Record<string, any>): string;
3
4
  //# sourceMappingURL=view-middleware.d.ts.map
@@ -4,6 +4,7 @@ import { decodeViewPath, extractRequestParams, getClientBootstrapConfigurationRo
4
4
  import { RequestHandlerSpan, getTracer } from '@lwrjs/instrumentation';
5
5
  import { handleErrors } from './utils/error-handling.js';
6
6
  import { LwrViewHandler } from '@lwrjs/view-registry';
7
+ import { convertToReadableSpan } from '@lwrjs/instrumentation/aws-exporter';
7
8
  function createViewMiddleware(route, errorRoutes, context, viewHandler) {
8
9
  const errorRoute = errorRoutes.find((route) => route.status === 500);
9
10
  const appConfig = context.appConfig;
@@ -37,12 +38,13 @@ function createViewMiddleware(route, errorRoutes, context, viewHandler) {
37
38
  params: viewRequest.params,
38
39
  query: viewRequest.query,
39
40
  cookie: req.headers?.cookie,
40
- coreProxy: req.getCoreProxy(route.bootstrap?.proxyForSSR),
41
+ coreProxy: req.getCoreProxy(appConfig.coreProxy ?? undefined, route.bootstrap?.proxyForSSR),
41
42
  };
42
43
  const resolve = req.isJsonRequest() ? viewHandler.getViewJson : viewHandler.getViewContent;
43
44
  let viewResponse;
44
45
  let resolvedRoute;
45
46
  let traceId;
47
+ let reqSpan;
46
48
  try {
47
49
  viewResponse = await getTracer().trace({
48
50
  name: RequestHandlerSpan.GetView,
@@ -55,6 +57,7 @@ function createViewMiddleware(route, errorRoutes, context, viewHandler) {
55
57
  },
56
58
  }, (span) => {
57
59
  traceId = span.traceId;
60
+ reqSpan = span.reqSpan;
58
61
  return resolve.call(viewHandler, viewRequest, route, runtimeEnvironment, runtimeParams);
59
62
  });
60
63
  resolvedRoute = route;
@@ -94,6 +97,11 @@ function createViewMiddleware(route, errorRoutes, context, viewHandler) {
94
97
  }
95
98
  if (traceId?.length) {
96
99
  res.setHeader('x-trace-id', traceId);
100
+ if (reqSpan?.status?.code === 0) {
101
+ res.set({
102
+ 'X-Custom-Lwr-Metric': convertMetricsToArrayOfStrings(convertToReadableSpan(reqSpan)),
103
+ });
104
+ }
97
105
  }
98
106
  let status = resolvedRoute.status || viewResponse.status || 200;
99
107
  const redirect = viewResponse.metadata?.viewDefinition?.redirect;
@@ -248,4 +256,17 @@ function addRedirectQueryParam(redirectUrl, depth) {
248
256
  url.searchParams.set(REQUEST_DEPTH_KEY, String(depth + 1));
249
257
  return url.toString().replace(fakeOrigin, '');
250
258
  }
259
+ export function convertMetricsToArrayOfStrings(span) {
260
+ const requiredMetrics = ['traceId', 'name', 'attributes', 'duration'];
261
+ return requiredMetrics.reduce((metricString, prop) => {
262
+ if (metricString && !metricString.endsWith('; ')) {
263
+ metricString += '; ';
264
+ }
265
+ if (span[prop]) {
266
+ const propValue = typeof span[prop] === 'object' ? JSON.stringify(span[prop]) : span[prop];
267
+ metricString += `${prop}: ${propValue}`;
268
+ }
269
+ return metricString;
270
+ }, '');
271
+ }
251
272
  //# sourceMappingURL=view-middleware.js.map
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "0.15.0-alpha.17",
7
+ "version": "0.15.0-alpha.18",
8
8
  "homepage": "https://developer.salesforce.com/docs/platform/lwr/overview",
9
9
  "repository": {
10
10
  "type": "git",
@@ -43,44 +43,44 @@
43
43
  "build": "tsc -b"
44
44
  },
45
45
  "dependencies": {
46
- "@lwrjs/app-service": "0.15.0-alpha.17",
47
- "@lwrjs/asset-registry": "0.15.0-alpha.17",
48
- "@lwrjs/asset-transformer": "0.15.0-alpha.17",
49
- "@lwrjs/base-view-provider": "0.15.0-alpha.17",
50
- "@lwrjs/base-view-transformer": "0.15.0-alpha.17",
51
- "@lwrjs/client-modules": "0.15.0-alpha.17",
52
- "@lwrjs/config": "0.15.0-alpha.17",
53
- "@lwrjs/diagnostics": "0.15.0-alpha.17",
54
- "@lwrjs/esbuild": "0.15.0-alpha.17",
55
- "@lwrjs/fs-asset-provider": "0.15.0-alpha.17",
56
- "@lwrjs/fs-watch": "0.15.0-alpha.17",
57
- "@lwrjs/html-view-provider": "0.15.0-alpha.17",
58
- "@lwrjs/instrumentation": "0.15.0-alpha.17",
59
- "@lwrjs/loader": "0.15.0-alpha.17",
60
- "@lwrjs/lwc-module-provider": "0.15.0-alpha.17",
61
- "@lwrjs/lwc-ssr": "0.15.0-alpha.17",
62
- "@lwrjs/markdown-view-provider": "0.15.0-alpha.17",
63
- "@lwrjs/module-bundler": "0.15.0-alpha.17",
64
- "@lwrjs/module-registry": "0.15.0-alpha.17",
65
- "@lwrjs/npm-module-provider": "0.15.0-alpha.17",
66
- "@lwrjs/nunjucks-view-provider": "0.15.0-alpha.17",
67
- "@lwrjs/o11y": "0.15.0-alpha.17",
68
- "@lwrjs/resource-registry": "0.15.0-alpha.17",
69
- "@lwrjs/router": "0.15.0-alpha.17",
70
- "@lwrjs/server": "0.15.0-alpha.17",
71
- "@lwrjs/shared-utils": "0.15.0-alpha.17",
72
- "@lwrjs/static": "0.15.0-alpha.17",
73
- "@lwrjs/view-registry": "0.15.0-alpha.17",
46
+ "@lwrjs/app-service": "0.15.0-alpha.18",
47
+ "@lwrjs/asset-registry": "0.15.0-alpha.18",
48
+ "@lwrjs/asset-transformer": "0.15.0-alpha.18",
49
+ "@lwrjs/base-view-provider": "0.15.0-alpha.18",
50
+ "@lwrjs/base-view-transformer": "0.15.0-alpha.18",
51
+ "@lwrjs/client-modules": "0.15.0-alpha.18",
52
+ "@lwrjs/config": "0.15.0-alpha.18",
53
+ "@lwrjs/diagnostics": "0.15.0-alpha.18",
54
+ "@lwrjs/esbuild": "0.15.0-alpha.18",
55
+ "@lwrjs/fs-asset-provider": "0.15.0-alpha.18",
56
+ "@lwrjs/fs-watch": "0.15.0-alpha.18",
57
+ "@lwrjs/html-view-provider": "0.15.0-alpha.18",
58
+ "@lwrjs/instrumentation": "0.15.0-alpha.18",
59
+ "@lwrjs/loader": "0.15.0-alpha.18",
60
+ "@lwrjs/lwc-module-provider": "0.15.0-alpha.18",
61
+ "@lwrjs/lwc-ssr": "0.15.0-alpha.18",
62
+ "@lwrjs/markdown-view-provider": "0.15.0-alpha.18",
63
+ "@lwrjs/module-bundler": "0.15.0-alpha.18",
64
+ "@lwrjs/module-registry": "0.15.0-alpha.18",
65
+ "@lwrjs/npm-module-provider": "0.15.0-alpha.18",
66
+ "@lwrjs/nunjucks-view-provider": "0.15.0-alpha.18",
67
+ "@lwrjs/o11y": "0.15.0-alpha.18",
68
+ "@lwrjs/resource-registry": "0.15.0-alpha.18",
69
+ "@lwrjs/router": "0.15.0-alpha.18",
70
+ "@lwrjs/server": "0.15.0-alpha.18",
71
+ "@lwrjs/shared-utils": "0.15.0-alpha.18",
72
+ "@lwrjs/static": "0.15.0-alpha.18",
73
+ "@lwrjs/view-registry": "0.15.0-alpha.18",
74
74
  "chokidar": "^3.6.0",
75
75
  "esbuild": "^0.9.7",
76
76
  "fs-extra": "^11.2.0",
77
77
  "path-to-regexp": "^6.2.2",
78
78
  "qs": "^6.13.0",
79
- "rollup": "^2.78.0",
79
+ "rollup": "^2.79.2",
80
80
  "ws": "^8.18.0"
81
81
  },
82
82
  "devDependencies": {
83
- "@lwrjs/types": "0.15.0-alpha.17",
83
+ "@lwrjs/types": "0.15.0-alpha.18",
84
84
  "@types/ws": "^8.5.12",
85
85
  "memfs": "^4.9.3"
86
86
  },
@@ -93,5 +93,5 @@
93
93
  "volta": {
94
94
  "extends": "../../../package.json"
95
95
  },
96
- "gitHead": "57b524a9be3a50ee50b7f6979a01bae458d09747"
96
+ "gitHead": "fefc639770948be769b1ace03b7759e7b8906cae"
97
97
  }