@lwrjs/core 0.7.0-alpha.9 → 0.7.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.
@@ -295,6 +295,11 @@ function normalizeConfig(config) {
295
295
  lwc: normalizeLwcConfig(mergeLWCConfigs(lwrJsonConfig, config)),
296
296
  bundleConfig: mergeBundleConfig(lwrJsonConfig, config),
297
297
  locker: mergeLockerConfig(lwrJsonConfig, config),
298
+ staticSiteGenerator: {
299
+ ...DEFAULT_GENERATOR_CONFIG,
300
+ ...lwrJsonConfig?.staticSiteGenerator,
301
+ ...config?.staticSiteGenerator
302
+ },
298
303
  rootDir
299
304
  };
300
305
  const assets = normalizeAssetsDir(mergedLwrGlobalConfig.assets, rootDir);
@@ -213,17 +213,31 @@ var LwrApp = class {
213
213
  await this.init();
214
214
  const {server, config, app} = this;
215
215
  const {serverMode, port} = config;
216
- server.listen(port || config.port, async () => {
217
- if (process.env.WARMUP?.toLowerCase() === "true") {
218
- try {
219
- await (0, import_server_warmup.warmupServer)(config, app.getInternalRequestKey());
220
- } catch (err) {
221
- throw (0, import_diagnostics.createSingleDiagnosticError)({
222
- description: import_diagnostics.descriptions.SERVER.WARMUP_ERROR(err.message)
223
- }, import_diagnostics.LwrServerError);
216
+ return new Promise((resolve, reject) => {
217
+ const handleError = (err) => {
218
+ server.off("error", handleError);
219
+ if (err.code === "EADDRINUSE") {
220
+ err = new Error(`Port ${port} is already in use.`);
224
221
  }
225
- }
226
- callback?.({serverMode, port});
222
+ reject(err);
223
+ };
224
+ server.on("error", handleError);
225
+ server.listen(port, async () => {
226
+ server.off("error", handleError);
227
+ if (process.env.WARMUP?.toLowerCase() === "true") {
228
+ try {
229
+ await (0, import_server_warmup.warmupServer)(config, app.getInternalRequestKey());
230
+ } catch (err) {
231
+ const diagnostic = (0, import_diagnostics.createSingleDiagnosticError)({
232
+ description: import_diagnostics.descriptions.SERVER.WARMUP_ERROR(err.message)
233
+ }, import_diagnostics.LwrServerError);
234
+ return reject(diagnostic);
235
+ }
236
+ }
237
+ const opts = {serverMode, port};
238
+ callback?.(opts);
239
+ resolve(opts);
240
+ });
227
241
  });
228
242
  }
229
243
  async close() {
@@ -102,8 +102,8 @@ function apiMiddleware(app, context) {
102
102
  res.type("application/javascript").send(bundleDef.code);
103
103
  } catch (e) {
104
104
  console.log(e);
105
- const error = (0, import_utils.createReturnStatus)(`bundle for "${moduleId?.specifier || req.params?.specifier}"`, e);
106
- res.status(error.status).send(error.message);
105
+ const error = (0, import_diagnostics.createReturnStatus)(`bundle for "${moduleId?.specifier || req.params?.specifier}"`, e);
106
+ res.status(error.status).type("text/plain").send(error.message);
107
107
  }
108
108
  });
109
109
  app.get([
@@ -138,8 +138,8 @@ function apiMiddleware(app, context) {
138
138
  }
139
139
  } catch (e) {
140
140
  console.log(e);
141
- const error = (0, import_utils.createReturnStatus)(`bundle for "${moduleId?.specifier || req.params?.specifier}"`, e);
142
- res.status(error.status).send(error.message);
141
+ const error = (0, import_diagnostics.createReturnStatus)(`bundle for "${moduleId?.specifier || req.params?.specifier}"`, e);
142
+ res.status(error.status).type("text/plain").send(error.message);
143
143
  }
144
144
  });
145
145
  app.get([
@@ -169,8 +169,8 @@ function apiMiddleware(app, context) {
169
169
  res.type("application/json").send(bundleDef.map);
170
170
  } catch (e) {
171
171
  console.log(e);
172
- const error = (0, import_utils.createReturnStatus)(`bundle sourcemap for "${moduleId?.specifier || req.params?.specifier}"`, e);
173
- res.status(error.status).send(error.message);
172
+ const error = (0, import_diagnostics.createReturnStatus)(`bundle sourcemap for "${moduleId?.specifier || req.params?.specifier}"`, e);
173
+ res.status(error.status).type("text/plain").send(error.message);
174
174
  }
175
175
  });
176
176
  app.get([
@@ -211,8 +211,8 @@ function apiMiddleware(app, context) {
211
211
  }
212
212
  } catch (e) {
213
213
  console.log(e);
214
- const error = (0, import_utils.createReturnStatus)(`module "${moduleId?.specifier || req.params?.specifier}"`, e);
215
- res.status(error.status).send(error.message);
214
+ const error = (0, import_diagnostics.createReturnStatus)(`module "${moduleId?.specifier || req.params?.specifier}"`, e);
215
+ res.status(error.status).type("text/plain").send(error.message);
216
216
  }
217
217
  });
218
218
  app.get([
@@ -247,8 +247,8 @@ function apiMiddleware(app, context) {
247
247
  }
248
248
  } catch (e) {
249
249
  console.log(e);
250
- const error = (0, import_utils.createReturnStatus)(`module "${moduleId?.specifier || req.params?.specifier}"`, e);
251
- res.status(error.status).send(error.message);
250
+ const error = (0, import_diagnostics.createReturnStatus)(`module "${moduleId?.specifier || req.params?.specifier}"`, e);
251
+ res.status(error.status).type("text/plain").send(error.message);
252
252
  }
253
253
  });
254
254
  app.get([
@@ -276,7 +276,7 @@ function apiMiddleware(app, context) {
276
276
  res.status(200).type("application/json").send(importMetadata);
277
277
  } catch (e) {
278
278
  console.log(e);
279
- const error = (0, import_utils.createReturnStatus)(`mappings for "${JSON.stringify(moduleIds || req.params?.specifiers)}"`, e);
279
+ const error = (0, import_diagnostics.createReturnStatus)(`mappings for "${JSON.stringify(moduleIds || req.params?.specifiers)}"`, e);
280
280
  res.status(error.status).send(error.message);
281
281
  }
282
282
  });
@@ -307,8 +307,8 @@ function apiMiddleware(app, context) {
307
307
  res.setMetadata({resource});
308
308
  } catch (e) {
309
309
  console.log(e);
310
- const error = (0, import_utils.createReturnStatus)(`resource "${resourceId?.specifier || req.params?.specifier}"`, e);
311
- res.status(error.status).send(error.message);
310
+ const error = (0, import_diagnostics.createReturnStatus)(`resource "${resourceId?.specifier || req.params?.specifier}"`, e);
311
+ res.status(error.status).type("text/plain").send(error.message);
312
312
  }
313
313
  });
314
314
  const paths = context.appConfig.assets.map((a) => a.urlPath);
@@ -317,11 +317,11 @@ function apiMiddleware(app, context) {
317
317
  }
318
318
  app.all(paths, async (req, res) => {
319
319
  const {runtimeEnvironment} = req.getRuntimeContext(defaultRuntimeEnvironment);
320
- const {
321
- assetId: {specifier, type},
322
- signature
323
- } = (0, import_shared_utils.getAssetIdentity)(req);
324
320
  try {
321
+ const {
322
+ assetId: {specifier, type},
323
+ signature
324
+ } = (0, import_shared_utils.getAssetIdentity)(req);
325
325
  const assetObj = await context.assetRegistry.getAsset({specifier, signature, type}, runtimeEnvironment);
326
326
  if (assetObj.mime) {
327
327
  res.type(assetObj.mime);
@@ -330,7 +330,7 @@ function apiMiddleware(app, context) {
330
330
  res.stream(assetObj.stream());
331
331
  } catch (e) {
332
332
  console.log(e);
333
- const error = (0, import_utils.createReturnStatus)(`asset at "${specifier}"`, e);
333
+ const error = (0, import_diagnostics.createReturnStatus)(`asset at "${req.originalUrl}"`, e);
334
334
  res.status(error.status).send(error.message);
335
335
  }
336
336
  });
@@ -352,8 +352,8 @@ function apiMiddleware(app, context) {
352
352
  res.stream(assetObj.stream());
353
353
  } catch (e) {
354
354
  console.log(e);
355
- const error = (0, import_utils.createReturnStatus)(`asset at "${specifier}"`, e);
356
- res.status(error.status).send(error.message);
355
+ const error = (0, import_diagnostics.createReturnStatus)(`asset at "${specifier}"`, e);
356
+ res.status(error.status).type("text/plain").send(error.message);
357
357
  }
358
358
  });
359
359
  }
@@ -33,6 +33,7 @@ var hmr;
33
33
  var Hmr = class {
34
34
  constructor(server, context) {
35
35
  this.server = server;
36
+ this.context = context;
36
37
  this.moduleRegistry = context.moduleRegistry;
37
38
  const observer = context.appObserver;
38
39
  observer.onModuleDefinitionChange(({payload}) => this.updateModuleDefOnClients(payload));
@@ -57,6 +58,13 @@ var Hmr = class {
57
58
  ws.on("error", () => connectedClients.delete(ws));
58
59
  }
59
60
  });
61
+ wss.on("error", (error) => {
62
+ if (error.code === "EADDRINUSE") {
63
+ console.error(`HMR Socket Server: Port ${this.context.appConfig.port} already in use.`);
64
+ } else {
65
+ console.error(error);
66
+ }
67
+ });
60
68
  }
61
69
  updateModuleDefOnClients(moduleDefinition) {
62
70
  const {moduleRegistry} = this;
@@ -95,11 +95,11 @@ function uiMiddleware(app, context) {
95
95
  const {appId, encodedViewPath} = req.params;
96
96
  const route = routes.find((route2) => route2.id === appId);
97
97
  if (!route) {
98
- res.status(404).send({error: `LWR configuration for "${appId} is not available"`});
98
+ res.status(404).send({error: `LWR configuration for appId "${appId}" is not available`});
99
99
  return;
100
100
  }
101
101
  try {
102
- const url = decodeURIComponent(encodedViewPath);
102
+ const url = (0, import_shared_utils.decodeViewPath)(encodedViewPath);
103
103
  const requestPath = route.path;
104
104
  const params = (0, import_shared_utils.extractRequestParams)(requestPath, url, req.params);
105
105
  const viewRequest = {
@@ -110,7 +110,7 @@ function uiMiddleware(app, context) {
110
110
  };
111
111
  const response = await viewHandler.getViewConfiguration(viewRequest, route, runtimeEnvironment, runtimeParams);
112
112
  if (!response) {
113
- res.status(404).send({error: `LWR configuration for "${route.id} is not available"`});
113
+ res.status(404).send({error: `LWR configuration for viewPath "${url}" is not available`});
114
114
  return;
115
115
  }
116
116
  const cacheTtl = response.cache?.ttl || route.cache?.ttl;
@@ -24,31 +24,11 @@ var __toModule = (module2) => {
24
24
  // packages/@lwrjs/core/src/middlewares/utils.ts
25
25
  __markAsModule(exports);
26
26
  __export(exports, {
27
- createReturnStatus: () => createReturnStatus,
28
27
  getRequestProperties: () => getRequestProperties,
29
28
  isSupportedEnvironment: () => isSupportedEnvironment
30
29
  });
31
- var import_diagnostics = __toModule(require("@lwrjs/diagnostics"));
32
30
  var import_path_to_regexp = __toModule(require("path-to-regexp"));
33
31
  var import_qs = __toModule(require("qs"));
34
- var import_dompurify = __toModule(require("dompurify"));
35
- var import_jsdom = __toModule(require("jsdom"));
36
- var window = new import_jsdom.JSDOM("").window;
37
- var DOMPurify = (0, import_dompurify.default)(window);
38
- function createReturnStatus(name, error) {
39
- let returnStatus = {status: 501, message: ""};
40
- if ((0, import_diagnostics.isNodeError)(error) && error.code === "NO_LWC_MODULE_FOUND") {
41
- returnStatus = {status: 404, message: import_diagnostics.descriptions.UNRESOLVABLE.LWC_MODULE(name).message};
42
- } else if (error instanceof import_diagnostics.LwrUnresolvableError && error.diagnostics[0].description.category === "lwrUnresolvable/invalid") {
43
- returnStatus = {status: 400, message: error.message};
44
- } else if (error instanceof import_diagnostics.LwrUnresolvableError) {
45
- returnStatus = {status: 404, message: error.message};
46
- } else {
47
- returnStatus = {status: 500, message: import_diagnostics.descriptions.UNRESOLVABLE.SERVER_ERROR(name).message};
48
- }
49
- returnStatus.message = DOMPurify.sanitize(returnStatus.message);
50
- return returnStatus;
51
- }
52
32
  function getRequestProperties(pattern, req) {
53
33
  const {url = "/"} = req;
54
34
  const [pathname, search] = url.split("?");
@@ -306,6 +306,11 @@ export function normalizeConfig(config) {
306
306
  lwc: normalizeLwcConfig(mergeLWCConfigs(lwrJsonConfig, config)),
307
307
  bundleConfig: mergeBundleConfig(lwrJsonConfig, config),
308
308
  locker: mergeLockerConfig(lwrJsonConfig, config),
309
+ staticSiteGenerator: {
310
+ ...DEFAULT_GENERATOR_CONFIG,
311
+ ...lwrJsonConfig?.staticSiteGenerator,
312
+ ...config?.staticSiteGenerator,
313
+ },
309
314
  rootDir,
310
315
  };
311
316
  // Normalize entries (eg: parse full file paths, etc)
@@ -11,7 +11,10 @@ export declare class LwrApp {
11
11
  listen(callback?: ((opts: {
12
12
  serverMode: string;
13
13
  port: number;
14
- }) => void) | undefined): Promise<void>;
14
+ }) => void) | undefined): Promise<{
15
+ serverMode: string;
16
+ port: number;
17
+ }>;
15
18
  close(): Promise<void>;
16
19
  getInternalServer<S extends ServerTypes>(): ServerTypeImpl<S>;
17
20
  getServer(): PublicAppServer<ServerTypes>;
package/build/es/index.js CHANGED
@@ -179,18 +179,32 @@ export class LwrApp {
179
179
  await this.init();
180
180
  const { server, config, app } = this;
181
181
  const { serverMode, port } = config;
182
- server.listen(port || config.port, async () => {
183
- if (process.env.WARMUP?.toLowerCase() === 'true') {
184
- try {
185
- await warmupServer(config, app.getInternalRequestKey());
182
+ return new Promise((resolve, reject) => {
183
+ const handleError = (err) => {
184
+ server.off('error', handleError);
185
+ if (err.code === 'EADDRINUSE') {
186
+ err = new Error(`Port ${port} is already in use.`);
186
187
  }
187
- catch (err) {
188
- throw createSingleDiagnosticError({
189
- description: descriptions.SERVER.WARMUP_ERROR(err.message),
190
- }, LwrServerError);
188
+ reject(err);
189
+ };
190
+ server.on('error', handleError);
191
+ server.listen(port, async () => {
192
+ server.off('error', handleError);
193
+ if (process.env.WARMUP?.toLowerCase() === 'true') {
194
+ try {
195
+ await warmupServer(config, app.getInternalRequestKey());
196
+ }
197
+ catch (err) {
198
+ const diagnostic = createSingleDiagnosticError({
199
+ description: descriptions.SERVER.WARMUP_ERROR(err.message),
200
+ }, LwrServerError);
201
+ return reject(diagnostic);
202
+ }
191
203
  }
192
- }
193
- callback?.({ serverMode, port });
204
+ const opts = { serverMode, port };
205
+ callback?.(opts);
206
+ resolve(opts);
207
+ });
194
208
  });
195
209
  }
196
210
  async close() {
@@ -1,6 +1,6 @@
1
- import { LwrUnresolvableError, createSingleDiagnosticError as createDiagnostic, descriptions, } from '@lwrjs/diagnostics';
1
+ import { createReturnStatus, LwrUnresolvableError, createSingleDiagnosticError as createDiagnostic, descriptions, } from '@lwrjs/diagnostics';
2
2
  import { LATEST_SIGNATURE, explodeSpecifier, getImportMetadataMappings, serializeModuleToJson, getModuleIdentity, getResourceIdentity, getAssetIdentity, getMappingIdentity, getVersionedModuleId, } from '@lwrjs/shared-utils';
3
- import { createReturnStatus, isSupportedEnvironment } from './utils.js';
3
+ import { isSupportedEnvironment } from './utils.js';
4
4
  export default function apiMiddleware(app, context) {
5
5
  const { appConfig: { environment: environmentConfig }, moduleRegistry, moduleBundler, resourceRegistry, runtimeEnvironment: defaultRuntimeEnvironment, } = context;
6
6
  const errors = descriptions.UNRESOLVABLE;
@@ -87,7 +87,7 @@ export default function apiMiddleware(app, context) {
87
87
  catch (e) {
88
88
  console.log(e);
89
89
  const error = createReturnStatus(`bundle for "${moduleId?.specifier || req.params?.specifier}"`, e);
90
- res.status(error.status).send(error.message);
90
+ res.status(error.status).type('text/plain').send(error.message);
91
91
  }
92
92
  });
93
93
  // Unsigned Bundles => 302
@@ -134,7 +134,7 @@ export default function apiMiddleware(app, context) {
134
134
  catch (e) {
135
135
  console.log(e);
136
136
  const error = createReturnStatus(`bundle for "${moduleId?.specifier || req.params?.specifier}"`, e);
137
- res.status(error.status).send(error.message);
137
+ res.status(error.status).type('text/plain').send(error.message);
138
138
  }
139
139
  });
140
140
  // Bundle sourcemaps
@@ -171,7 +171,7 @@ export default function apiMiddleware(app, context) {
171
171
  catch (e) {
172
172
  console.log(e);
173
173
  const error = createReturnStatus(`bundle sourcemap for "${moduleId?.specifier || req.params?.specifier}"`, e);
174
- res.status(error.status).send(error.message);
174
+ res.status(error.status).type('text/plain').send(error.message);
175
175
  }
176
176
  });
177
177
  // Signed Modules
@@ -224,7 +224,7 @@ export default function apiMiddleware(app, context) {
224
224
  catch (e) {
225
225
  console.log(e);
226
226
  const error = createReturnStatus(`module "${moduleId?.specifier || req.params?.specifier}"`, e);
227
- res.status(error.status).send(error.message);
227
+ res.status(error.status).type('text/plain').send(error.message);
228
228
  }
229
229
  });
230
230
  // Unsigned Modules => 302
@@ -272,7 +272,7 @@ export default function apiMiddleware(app, context) {
272
272
  catch (e) {
273
273
  console.log(e);
274
274
  const error = createReturnStatus(`module "${moduleId?.specifier || req.params?.specifier}"`, e);
275
- res.status(error.status).send(error.message);
275
+ res.status(error.status).type('text/plain').send(error.message);
276
276
  }
277
277
  });
278
278
  // Mapping Services
@@ -351,7 +351,7 @@ export default function apiMiddleware(app, context) {
351
351
  catch (e) {
352
352
  console.log(e);
353
353
  const error = createReturnStatus(`resource "${resourceId?.specifier || req.params?.specifier}"`, e);
354
- res.status(error.status).send(error.message);
354
+ res.status(error.status).type('text/plain').send(error.message);
355
355
  }
356
356
  });
357
357
  // -- Asset configuration -----------------------------------------------------------
@@ -364,8 +364,8 @@ export default function apiMiddleware(app, context) {
364
364
  }
365
365
  app.all(paths, async (req, res) => {
366
366
  const { runtimeEnvironment } = req.getRuntimeContext(defaultRuntimeEnvironment);
367
- const { assetId: { specifier, type }, signature, } = getAssetIdentity(req);
368
367
  try {
368
+ const { assetId: { specifier, type }, signature, } = getAssetIdentity(req);
369
369
  const assetObj = await context.assetRegistry.getAsset({ specifier, signature, type }, runtimeEnvironment);
370
370
  if (assetObj.mime) {
371
371
  res.type(assetObj.mime);
@@ -375,7 +375,7 @@ export default function apiMiddleware(app, context) {
375
375
  }
376
376
  catch (e) {
377
377
  console.log(e);
378
- const error = createReturnStatus(`asset at "${specifier}"`, e);
378
+ const error = createReturnStatus(`asset at "${req.originalUrl}"`, e);
379
379
  res.status(error.status).send(error.message);
380
380
  }
381
381
  });
@@ -403,7 +403,7 @@ export default function apiMiddleware(app, context) {
403
403
  catch (e) {
404
404
  console.log(e);
405
405
  const error = createReturnStatus(`asset at "${specifier}"`, e);
406
- res.status(error.status).send(error.message);
406
+ res.status(error.status).type('text/plain').send(error.message);
407
407
  }
408
408
  });
409
409
  }
@@ -5,6 +5,7 @@ let hmr;
5
5
  class Hmr {
6
6
  constructor(server, context) {
7
7
  this.server = server;
8
+ this.context = context;
8
9
  this.moduleRegistry = context.moduleRegistry;
9
10
  const observer = context.appObserver;
10
11
  observer.onModuleDefinitionChange(({ payload }) => this.updateModuleDefOnClients(payload));
@@ -30,6 +31,14 @@ class Hmr {
30
31
  ws.on('error', () => connectedClients.delete(ws));
31
32
  }
32
33
  });
34
+ wss.on('error', (error) => {
35
+ if (error.code === 'EADDRINUSE') {
36
+ console.error(`HMR Socket Server: Port ${this.context.appConfig.port} already in use.`);
37
+ }
38
+ else {
39
+ console.error(error);
40
+ }
41
+ });
33
42
  }
34
43
  updateModuleDefOnClients(moduleDefinition) {
35
44
  const { moduleRegistry } = this;
@@ -2,7 +2,7 @@ import ms from 'ms';
2
2
  import { DiagnosticsError } from '@lwrjs/diagnostics';
3
3
  import { LwrViewHandler } from '@lwrjs/view-registry';
4
4
  import { isSupportedEnvironment } from './utils.js';
5
- import { getClientBootstrapConfigurationRoutes, extractRequestParams } from '@lwrjs/shared-utils';
5
+ import { decodeViewPath, getClientBootstrapConfigurationRoutes, extractRequestParams, } from '@lwrjs/shared-utils';
6
6
  export default function uiMiddleware(app, context) {
7
7
  const { viewRegistry, moduleRegistry, runtimeEnvironment: defaultRuntimeEnvironment } = context;
8
8
  const { environment: environmentConfig, routes, errorRoutes } = context.appConfig;
@@ -76,12 +76,12 @@ export default function uiMiddleware(app, context) {
76
76
  // Match the route id
77
77
  const route = routes.find((route) => route.id === appId);
78
78
  if (!route) {
79
- res.status(404).send({ error: `LWR configuration for "${appId} is not available"` });
79
+ res.status(404).send({ error: `LWR configuration for appId "${appId}" is not available` });
80
80
  return;
81
81
  }
82
82
  try {
83
83
  // decode the resolved view path and extract any params.
84
- const url = decodeURIComponent(encodedViewPath);
84
+ const url = decodeViewPath(encodedViewPath);
85
85
  const requestPath = route.path;
86
86
  const params = extractRequestParams(requestPath, url, req.params);
87
87
  // HTML document
@@ -93,7 +93,7 @@ export default function uiMiddleware(app, context) {
93
93
  };
94
94
  const response = await viewHandler.getViewConfiguration(viewRequest, route, runtimeEnvironment, runtimeParams);
95
95
  if (!response) {
96
- res.status(404).send({ error: `LWR configuration for "${route.id} is not available"` });
96
+ res.status(404).send({ error: `LWR configuration for viewPath "${url}" is not available` });
97
97
  return;
98
98
  }
99
99
  // Same cache ttl as the Content response
@@ -2,16 +2,6 @@
2
2
  import http from 'http';
3
3
  import { EnvironmentConfig } from '@lwrjs/types';
4
4
  import qs from 'qs';
5
- /**
6
- * Create a status object Express can return when there is an error
7
- *
8
- * @param name - string name of the problem module/resource
9
- * @param error - an Error/Diagnostic object; thrown from try/catch
10
- */
11
- export declare function createReturnStatus(name: string, error: unknown): {
12
- status: number;
13
- message: string;
14
- };
15
5
  interface Params {
16
6
  [key: string]: string;
17
7
  }
@@ -1,34 +1,5 @@
1
- import { LwrUnresolvableError, descriptions, isNodeError } from '@lwrjs/diagnostics';
2
1
  import { pathToRegexp } from 'path-to-regexp';
3
2
  import qs from 'qs';
4
- import createDOMPurify from 'dompurify';
5
- import { JSDOM } from 'jsdom';
6
- const window = new JSDOM('').window;
7
- const DOMPurify = createDOMPurify(window);
8
- /**
9
- * Create a status object Express can return when there is an error
10
- *
11
- * @param name - string name of the problem module/resource
12
- * @param error - an Error/Diagnostic object; thrown from try/catch
13
- */
14
- export function createReturnStatus(name, error) {
15
- let returnStatus = { status: 501, message: '' };
16
- if (isNodeError(error) && error.code === 'NO_LWC_MODULE_FOUND') {
17
- returnStatus = { status: 404, message: descriptions.UNRESOLVABLE.LWC_MODULE(name).message };
18
- }
19
- else if (error instanceof LwrUnresolvableError &&
20
- error.diagnostics[0].description.category === 'lwrUnresolvable/invalid') {
21
- returnStatus = { status: 400, message: error.message };
22
- }
23
- else if (error instanceof LwrUnresolvableError) {
24
- returnStatus = { status: 404, message: error.message };
25
- }
26
- else {
27
- returnStatus = { status: 500, message: descriptions.UNRESOLVABLE.SERVER_ERROR(name).message };
28
- }
29
- returnStatus.message = DOMPurify.sanitize(returnStatus.message);
30
- return returnStatus;
31
- }
32
3
  // Adapted from https://github.com/expressjs/express/blob/master/lib/router/layer.js
33
4
  export function getRequestProperties(pattern, req) {
34
5
  const { url = '/' } = req;
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "0.7.0-alpha.9",
7
+ "version": "0.7.0",
8
8
  "homepage": "https://developer.salesforce.com/docs/platform/lwr/overview",
9
9
  "repository": {
10
10
  "type": "git",
@@ -33,47 +33,45 @@
33
33
  "package.cjs"
34
34
  ],
35
35
  "dependencies": {
36
- "@lwrjs/app-service": "0.7.0-alpha.9",
37
- "@lwrjs/asset-registry": "0.7.0-alpha.9",
38
- "@lwrjs/asset-transformer": "0.7.0-alpha.9",
39
- "@lwrjs/base-template-engine": "0.7.0-alpha.9",
40
- "@lwrjs/base-view-provider": "0.7.0-alpha.9",
41
- "@lwrjs/base-view-transformer": "0.7.0-alpha.9",
42
- "@lwrjs/client-modules": "0.7.0-alpha.9",
43
- "@lwrjs/compiler": "0.7.0-alpha.9",
44
- "@lwrjs/diagnostics": "0.7.0-alpha.9",
45
- "@lwrjs/fs-asset-provider": "0.7.0-alpha.9",
46
- "@lwrjs/html-view-provider": "0.7.0-alpha.9",
47
- "@lwrjs/loader": "0.7.0-alpha.9",
48
- "@lwrjs/lwc-module-provider": "0.7.0-alpha.9",
49
- "@lwrjs/lwc-ssr": "0.7.0-alpha.9",
50
- "@lwrjs/markdown-view-provider": "0.7.0-alpha.9",
51
- "@lwrjs/module-bundler": "0.7.0-alpha.9",
52
- "@lwrjs/module-registry": "0.7.0-alpha.9",
53
- "@lwrjs/npm-module-provider": "0.7.0-alpha.9",
54
- "@lwrjs/nunjucks-view-provider": "0.7.0-alpha.9",
55
- "@lwrjs/o11y": "0.7.0-alpha.9",
56
- "@lwrjs/resource-registry": "0.7.0-alpha.9",
57
- "@lwrjs/router": "0.7.0-alpha.9",
58
- "@lwrjs/server": "0.7.0-alpha.9",
59
- "@lwrjs/shared-utils": "0.7.0-alpha.9",
60
- "@lwrjs/view-registry": "0.7.0-alpha.9",
61
- "dompurify": "^2.3.0",
62
- "fs-extra": "^10.0.0",
63
- "jsdom": "^16.7.0",
36
+ "@lwrjs/app-service": "0.7.0",
37
+ "@lwrjs/asset-registry": "0.7.0",
38
+ "@lwrjs/asset-transformer": "0.7.0",
39
+ "@lwrjs/base-template-engine": "0.7.0",
40
+ "@lwrjs/base-view-provider": "0.7.0",
41
+ "@lwrjs/base-view-transformer": "0.7.0",
42
+ "@lwrjs/client-modules": "0.7.0",
43
+ "@lwrjs/compiler": "0.7.0",
44
+ "@lwrjs/diagnostics": "0.7.0",
45
+ "@lwrjs/fs-asset-provider": "0.7.0",
46
+ "@lwrjs/html-view-provider": "0.7.0",
47
+ "@lwrjs/loader": "0.7.0",
48
+ "@lwrjs/lwc-module-provider": "0.7.0",
49
+ "@lwrjs/lwc-ssr": "0.7.0",
50
+ "@lwrjs/markdown-view-provider": "0.7.0",
51
+ "@lwrjs/module-bundler": "0.7.0",
52
+ "@lwrjs/module-registry": "0.7.0",
53
+ "@lwrjs/npm-module-provider": "0.7.0",
54
+ "@lwrjs/nunjucks-view-provider": "0.7.0",
55
+ "@lwrjs/o11y": "0.7.0",
56
+ "@lwrjs/resource-registry": "0.7.0",
57
+ "@lwrjs/router": "0.7.0",
58
+ "@lwrjs/server": "0.7.0",
59
+ "@lwrjs/shared-utils": "0.7.0",
60
+ "@lwrjs/view-registry": "0.7.0",
61
+ "fs-extra": "^10.1.0",
64
62
  "jsonc-parser": "^3.0.0",
65
63
  "ms": "^2.1.3",
66
64
  "path-to-regexp": "^6.2.0",
67
65
  "qs": "^6.9.4"
68
66
  },
69
67
  "devDependencies": {
70
- "@lwrjs/types": "0.7.0-alpha.9"
68
+ "@lwrjs/types": "0.7.0"
71
69
  },
72
70
  "peerDependencies": {
73
71
  "lwc": ">= 1.x <= 2.x"
74
72
  },
75
73
  "engines": {
76
- "node": ">=14.15.4 <17"
74
+ "node": ">=14.15.4 <19"
77
75
  },
78
- "gitHead": "522665298cc74f1898da6ed018fa72504bd72645"
76
+ "gitHead": "c6dcb52144a8da80170e30d49a87e29d2da30f9b"
79
77
  }