@lwrjs/core 0.9.0-alpha.9 → 0.9.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 (79) hide show
  1. package/build/cjs/context/provider.cjs +9 -5
  2. package/build/cjs/context/server.cjs +6 -6
  3. package/build/cjs/index.cjs +66 -41
  4. package/build/cjs/middleware/asset-middleware.cjs +70 -0
  5. package/build/cjs/middleware/bundle-middleware.cjs +113 -0
  6. package/build/cjs/{middlewares → middleware}/hmr-middleware.cjs +6 -6
  7. package/build/cjs/{middlewares → middleware}/locale-middleware.cjs +2 -2
  8. package/build/cjs/middleware/mapping-middleware.cjs +61 -0
  9. package/build/cjs/middleware/module-middleware.cjs +88 -0
  10. package/build/cjs/middleware/redirects/unsigned-module-redirect.cjs +37 -0
  11. package/build/cjs/middleware/resource-middleware.cjs +64 -0
  12. package/build/cjs/{context/global-data.cjs → middleware/utils/error-handling.cjs} +26 -24
  13. package/build/cjs/middleware/utils/identity.cjs +92 -0
  14. package/build/cjs/{context/services.cjs → middleware/utils/metadata.cjs} +19 -20
  15. package/build/cjs/{middlewares/utils.cjs → middleware/utils/request.cjs} +17 -16
  16. package/build/cjs/middleware/view-middleware.cjs +151 -0
  17. package/build/cjs/middleware.cjs +16 -9
  18. package/build/cjs/tools/server-warmup.cjs +2 -9
  19. package/build/cjs/tools/static-generation.cjs +190 -62
  20. package/build/es/context/provider.js +5 -3
  21. package/build/es/context/server.d.ts +1 -1
  22. package/build/es/context/server.js +6 -5
  23. package/build/es/index.d.ts +3 -2
  24. package/build/es/index.js +85 -49
  25. package/build/es/middleware/asset-middleware.d.ts +3 -0
  26. package/build/es/middleware/asset-middleware.js +42 -0
  27. package/build/es/middleware/bundle-middleware.d.ts +3 -0
  28. package/build/es/middleware/bundle-middleware.js +88 -0
  29. package/build/es/middleware/hmr-middleware.d.ts +5 -0
  30. package/build/es/{middlewares → middleware}/hmr-middleware.js +4 -4
  31. package/build/es/middleware/locale-middleware.d.ts +3 -0
  32. package/build/es/{middlewares → middleware}/locale-middleware.js +2 -1
  33. package/build/es/middleware/mapping-middleware.d.ts +3 -0
  34. package/build/es/middleware/mapping-middleware.js +34 -0
  35. package/build/es/middleware/module-middleware.d.ts +3 -0
  36. package/build/es/middleware/module-middleware.js +64 -0
  37. package/build/es/middleware/redirects/unsigned-module-redirect.d.ts +6 -0
  38. package/build/es/middleware/redirects/unsigned-module-redirect.js +25 -0
  39. package/build/es/middleware/resource-middleware.d.ts +3 -0
  40. package/build/es/middleware/resource-middleware.js +37 -0
  41. package/build/es/middleware/utils/error-handling.d.ts +3 -0
  42. package/build/es/middleware/utils/error-handling.js +32 -0
  43. package/build/es/middleware/utils/identity.d.ts +6 -0
  44. package/build/es/middleware/utils/identity.js +62 -0
  45. package/build/es/middleware/utils/metadata.d.ts +3 -0
  46. package/build/es/middleware/utils/metadata.js +24 -0
  47. package/build/es/middleware/utils/request.d.ts +15 -0
  48. package/build/es/{middlewares/utils.js → middleware/utils/request.js} +15 -23
  49. package/build/es/middleware/view-middleware.d.ts +3 -0
  50. package/build/es/middleware/view-middleware.js +136 -0
  51. package/build/es/middleware.d.ts +8 -14
  52. package/build/es/middleware.js +12 -20
  53. package/build/es/tools/server-warmup.js +3 -10
  54. package/build/es/tools/static-generation.d.ts +11 -1
  55. package/build/es/tools/static-generation.js +230 -79
  56. package/build/es/tools/types.d.ts +3 -2
  57. package/package.json +33 -34
  58. package/build/cjs/context/configurations.cjs +0 -82
  59. package/build/cjs/middlewares/api-middleware.cjs +0 -359
  60. package/build/cjs/middlewares/base-middleware.cjs +0 -15
  61. package/build/cjs/middlewares/ui-middleware.cjs +0 -183
  62. package/build/cjs/tools/server-build.cjs +0 -182
  63. package/build/es/context/configurations.d.ts +0 -9
  64. package/build/es/context/configurations.js +0 -53
  65. package/build/es/context/global-data.d.ts +0 -3
  66. package/build/es/context/global-data.js +0 -29
  67. package/build/es/context/services.d.ts +0 -3
  68. package/build/es/context/services.js +0 -27
  69. package/build/es/middlewares/api-middleware.d.ts +0 -3
  70. package/build/es/middlewares/api-middleware.js +0 -410
  71. package/build/es/middlewares/base-middleware.d.ts +0 -3
  72. package/build/es/middlewares/base-middleware.js +0 -4
  73. package/build/es/middlewares/hmr-middleware.d.ts +0 -5
  74. package/build/es/middlewares/locale-middleware.d.ts +0 -3
  75. package/build/es/middlewares/ui-middleware.d.ts +0 -3
  76. package/build/es/middlewares/ui-middleware.js +0 -186
  77. package/build/es/middlewares/utils.d.ts +0 -22
  78. package/build/es/tools/server-build.d.ts +0 -14
  79. package/build/es/tools/server-build.js +0 -182
@@ -0,0 +1,37 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
3
+ var __export = (target, all) => {
4
+ for (var name in all)
5
+ __defProp(target, name, {get: all[name], enumerable: true});
6
+ };
7
+
8
+ // packages/@lwrjs/core/src/middleware/redirects/unsigned-module-redirect.ts
9
+ __markAsModule(exports);
10
+ __export(exports, {
11
+ createUnsignedBundleRedirect: () => createUnsignedBundleRedirect,
12
+ createUnsignedModuleRedirect: () => createUnsignedModuleRedirect
13
+ });
14
+ var HEADER_LOCATION = "Location";
15
+ var STATUS_FOUND = 302;
16
+ function createUnsignedModuleRedirect(moduleRegistry) {
17
+ return async (req, res, moduleId, runtimeEnvironment, runtimeParams) => {
18
+ const jsonQuery = getJsonQualifier(req, runtimeEnvironment);
19
+ const {moduleEntry, ownHash} = await moduleRegistry.getModule(moduleId);
20
+ const uri = await moduleRegistry.resolveModuleUri({...moduleId, version: moduleEntry.version}, runtimeEnvironment, runtimeParams, ownHash);
21
+ sendRedirect(res, `${uri}${jsonQuery}`);
22
+ };
23
+ }
24
+ function createUnsignedBundleRedirect(moduleBundler) {
25
+ return async (req, res, moduleId, runtimeEnvironment, runtimeParams) => {
26
+ const jsonQuery = getJsonQualifier(req, runtimeEnvironment);
27
+ const uri = await moduleBundler.resolveModuleUri(moduleId, runtimeEnvironment, runtimeParams);
28
+ sendRedirect(res, `${uri}${jsonQuery}`);
29
+ };
30
+ }
31
+ function getJsonQualifier(req, runtimeEnvironment) {
32
+ return req.isJsonRequest() ? `${runtimeEnvironment.debug ? "&" : "?"}json` : "";
33
+ }
34
+ function sendRedirect(res, url) {
35
+ res.setHeader(HEADER_LOCATION, url);
36
+ res.sendStatus(STATUS_FOUND);
37
+ }
@@ -0,0 +1,64 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, {get: all[name], enumerable: true});
11
+ };
12
+ var __exportStar = (target, module2, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && key !== "default")
16
+ __defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});
17
+ }
18
+ return target;
19
+ };
20
+ var __toModule = (module2) => {
21
+ return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
22
+ };
23
+
24
+ // packages/@lwrjs/core/src/middleware/resource-middleware.ts
25
+ __markAsModule(exports);
26
+ __export(exports, {
27
+ resourceMiddleware: () => resourceMiddleware
28
+ });
29
+ var import_diagnostics = __toModule(require("@lwrjs/diagnostics"));
30
+ var import_identity = __toModule(require("./utils/identity.cjs"));
31
+ var import_error_handling = __toModule(require("./utils/error-handling.cjs"));
32
+ function createResourceMiddleware(context) {
33
+ const {resourceRegistry} = context;
34
+ return async (req, res) => {
35
+ if (!req.validateEnvironmentRequest(context.appConfig)) {
36
+ res.status(400).send(import_diagnostics.descriptions.UNRESOLVABLE.INVALID_ENVIRONMENT(req.params.environment).message);
37
+ return;
38
+ }
39
+ const {runtimeEnvironment, runtimeParams} = req.getRuntimeContext(context.runtimeEnvironment);
40
+ const {resourceId} = (0, import_identity.getResourceIdentity)(req);
41
+ const resource = await resourceRegistry.getResource(resourceId, runtimeEnvironment, runtimeParams);
42
+ if (req.isSiteGeneration()) {
43
+ res.setSiteGenerationMetadata({resource});
44
+ }
45
+ if (resource && resource.content) {
46
+ const type = resource.type === "text/css" ? resource.type : "application/javascript";
47
+ res.status(200).type(type).send(resource.content);
48
+ return;
49
+ }
50
+ if (resource && resource.stream) {
51
+ res.status(200).type(resource.type).stream(resource.stream());
52
+ return;
53
+ }
54
+ res.status(404).send(import_diagnostics.descriptions.UNRESOLVABLE.RESOURCE(resourceId.specifier).message);
55
+ };
56
+ }
57
+ function resourceMiddleware(app, context) {
58
+ app.get([
59
+ `/:apiVersion/resource/:format/l/:locale/e/:environment/:specifier/:prettyUrl?`,
60
+ `/:apiVersion/resource/:format/l/:locale/:specifier/:prettyUrl?`,
61
+ `/:apiVersion/resource/:format/e/:environment/:specifier/:prettyUrl?`,
62
+ `/:apiVersion/resource/:format/:specifier/:prettyUrl?`
63
+ ], (0, import_error_handling.handleErrors)(createResourceMiddleware(context)));
64
+ }
@@ -21,34 +21,36 @@ var __toModule = (module2) => {
21
21
  return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
22
22
  };
23
23
 
24
- // packages/@lwrjs/core/src/context/global-data.ts
24
+ // packages/@lwrjs/core/src/middleware/utils/error-handling.ts
25
25
  __markAsModule(exports);
26
26
  __export(exports, {
27
- getGlobalData: () => getGlobalData
27
+ handleErrors: () => handleErrors
28
28
  });
29
- var import_fs = __toModule(require("fs"));
30
- var import_path = __toModule(require("path"));
31
- function recursiveJsonCollector(resources, currentPath, collector) {
32
- for (const resource of resources) {
33
- const resourcePath = import_path.default.join(currentPath, resource);
34
- if (resource.endsWith(".json")) {
35
- const resourceName = import_path.default.basename(resource, ".json");
36
- const jsonSource = JSON.parse(import_fs.default.readFileSync(resourcePath, "utf-8"));
37
- collector[resourceName] = jsonSource;
38
- } else if (import_fs.default.statSync(resourcePath).isDirectory()) {
39
- const dirContentList = import_fs.default.readdirSync(resourcePath);
40
- collector[resource] = recursiveJsonCollector(dirContentList, resourcePath, {});
41
- }
29
+ var import_diagnostics = __toModule(require("@lwrjs/diagnostics"));
30
+ function createReturnStatus(error, url) {
31
+ if (error instanceof import_diagnostics.LwrUnresolvableError && error.diagnostics[0].description.category === "lwrUnresolvable/invalid") {
32
+ return {status: 400, message: error.message};
42
33
  }
43
- return collector;
44
- }
45
- function getGlobalData(globalDataDir, defaultData = {}) {
46
- if (!import_fs.default.existsSync(globalDataDir) || !import_fs.default.statSync(globalDataDir).isDirectory()) {
47
- return defaultData;
34
+ if (error instanceof import_diagnostics.LwrUnresolvableError) {
35
+ return {status: 404, message: error.message};
48
36
  }
49
- const dirContentList = import_fs.default.readdirSync(globalDataDir);
50
- return {
51
- ...recursiveJsonCollector(dirContentList, globalDataDir, {}),
52
- ...defaultData
37
+ return {status: 500, message: import_diagnostics.descriptions.UNRESOLVABLE.SERVER_ERROR(url).message};
38
+ }
39
+ function handleErrors(middleware) {
40
+ return async (req, res, next) => {
41
+ try {
42
+ await middleware(req, res, next);
43
+ } catch (err) {
44
+ if (err instanceof import_diagnostics.DiagnosticsError) {
45
+ console.error("LWR Diagnostic Error: " + err.message);
46
+ console.error(err.diagnostics);
47
+ console.error(err.stack);
48
+ } else {
49
+ console.error(err);
50
+ }
51
+ const {status, message} = createReturnStatus(err, req.originalUrl);
52
+ res.status(status);
53
+ res.send(message);
54
+ }
53
55
  };
54
56
  }
@@ -0,0 +1,92 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, {get: all[name], enumerable: true});
11
+ };
12
+ var __exportStar = (target, module2, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && key !== "default")
16
+ __defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});
17
+ }
18
+ return target;
19
+ };
20
+ var __toModule = (module2) => {
21
+ return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
22
+ };
23
+
24
+ // packages/@lwrjs/core/src/middleware/utils/identity.ts
25
+ __markAsModule(exports);
26
+ __export(exports, {
27
+ getAssetIdentity: () => getAssetIdentity,
28
+ getMappingIdentity: () => getMappingIdentity,
29
+ getModuleIdentity: () => getModuleIdentity,
30
+ getResourceIdentity: () => getResourceIdentity
31
+ });
32
+ var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
33
+ var import_diagnostics = __toModule(require("@lwrjs/diagnostics"));
34
+ function validateSpecifier(specifer) {
35
+ return specifer.indexOf("../") < 0;
36
+ }
37
+ function getModuleIdentity(req, importer) {
38
+ const {specifier, signature} = req.params;
39
+ if (validateSpecifier(specifier) === false) {
40
+ throw (0, import_diagnostics.createSingleDiagnosticError)({
41
+ description: import_diagnostics.descriptions.UNRESOLVABLE.INVALID_SPECIFIER(specifier)
42
+ }, import_diagnostics.LwrUnresolvableError);
43
+ }
44
+ const moduleId = (0, import_shared_utils.explodeSpecifier)(specifier);
45
+ return {
46
+ moduleId: {
47
+ ...moduleId,
48
+ importer
49
+ },
50
+ signature
51
+ };
52
+ }
53
+ function getMappingIdentity(req) {
54
+ const {specifiers} = req.params;
55
+ const moduleIds = (0, import_shared_utils.explodeSpecifiers)(specifiers).map((obj) => ({
56
+ ...obj,
57
+ importer: req.query.importer
58
+ }));
59
+ return {
60
+ moduleIds
61
+ };
62
+ }
63
+ function getResourceIdentity(req) {
64
+ const {specifier, signature = import_shared_utils.LATEST_SIGNATURE} = req.params;
65
+ if (validateSpecifier(specifier) === false) {
66
+ throw (0, import_diagnostics.createSingleDiagnosticError)({
67
+ description: import_diagnostics.descriptions.UNRESOLVABLE.INVALID_SPECIFIER(specifier)
68
+ }, import_diagnostics.LwrUnresolvableError);
69
+ }
70
+ const resourceId = (0, import_shared_utils.explodeSpecifier)(specifier);
71
+ return {
72
+ resourceId,
73
+ signature
74
+ };
75
+ }
76
+ function getAssetIdentity(req) {
77
+ const {signature, immutable, assetType: type} = req.params;
78
+ const specifier = signature && type ? "/" + req.params[0] : req.originalUrl.split("?")[0];
79
+ if (validateSpecifier(specifier) === false) {
80
+ throw (0, import_diagnostics.createSingleDiagnosticError)({
81
+ description: import_diagnostics.descriptions.UNRESOLVABLE.INVALID_SPECIFIER(specifier)
82
+ }, import_diagnostics.LwrUnresolvableError);
83
+ }
84
+ return {
85
+ immutable,
86
+ assetId: {
87
+ specifier,
88
+ type
89
+ },
90
+ signature: signature || import_shared_utils.LATEST_SIGNATURE
91
+ };
92
+ }
@@ -21,30 +21,29 @@ var __toModule = (module2) => {
21
21
  return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
22
22
  };
23
23
 
24
- // packages/@lwrjs/core/src/context/services.ts
24
+ // packages/@lwrjs/core/src/middleware/utils/metadata.ts
25
25
  __markAsModule(exports);
26
26
  __export(exports, {
27
- getServices: () => getServices
27
+ normalizeResolvedUris: () => normalizeResolvedUris
28
28
  });
29
- var import_path = __toModule(require("path"));
30
29
  var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
31
- async function getServiceModule(path, {cacheDir, rootDir}) {
32
- try {
33
- if (path.endsWith(".ts")) {
34
- const fullPath = (0, import_shared_utils.resolveFileExtension)(path);
35
- path = await (0, import_shared_utils.transpileTs)(fullPath, {rootDir, cacheDir: import_path.default.join(cacheDir, "services")});
30
+ async function normalizeResolvedUris(bundleDefinition, runtimeEnvironment, runtimeParams, moduleBundler, moduleRegistry) {
31
+ const resolvedUris = [];
32
+ if (bundleDefinition.bundleRecord.imports) {
33
+ for (const theImport of bundleDefinition.bundleRecord.imports) {
34
+ const childSpecifier = theImport.specifier;
35
+ const id = await (0, import_shared_utils.getVersionedModuleId)(childSpecifier, moduleRegistry);
36
+ const uri = await moduleBundler.resolveModuleUri(id, runtimeEnvironment, runtimeParams);
37
+ resolvedUris.push(uri);
36
38
  }
37
- const moduleEntry = await Promise.resolve().then(() => __toModule(require(path)));
38
- return moduleEntry.default || moduleEntry;
39
- } catch (err) {
40
- console.log(err);
41
- throw new Error(`Unable to get Service: ${path}`);
42
39
  }
43
- }
44
- async function getServices(services, providerContext, lwrConfig) {
45
- return Promise.all(services.map(async (serviceEntry) => {
46
- const [serviceName, serviceConfig = {}] = Array.isArray(serviceEntry) ? serviceEntry : [serviceEntry];
47
- const ServiceCtor = await getServiceModule(serviceName, lwrConfig);
48
- return new ServiceCtor(serviceConfig, providerContext);
49
- }));
40
+ if (bundleDefinition.bundleRecord.dynamicImports) {
41
+ for (const theImport of bundleDefinition.bundleRecord.dynamicImports) {
42
+ const childSpecifier = theImport.specifier;
43
+ const id = await (0, import_shared_utils.getVersionedModuleId)(childSpecifier, moduleRegistry);
44
+ const uri = await moduleBundler.resolveModuleUri(id, runtimeEnvironment, runtimeParams);
45
+ resolvedUris.push(uri);
46
+ }
47
+ }
48
+ return resolvedUris;
50
49
  }
@@ -21,14 +21,21 @@ var __toModule = (module2) => {
21
21
  return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
22
22
  };
23
23
 
24
- // packages/@lwrjs/core/src/middlewares/utils.ts
24
+ // packages/@lwrjs/core/src/middleware/utils/request.ts
25
25
  __markAsModule(exports);
26
26
  __export(exports, {
27
- getRequestProperties: () => getRequestProperties,
28
- isSupportedEnvironment: () => isSupportedEnvironment
27
+ getRequestImporter: () => getRequestImporter,
28
+ getRequestProperties: () => getRequestProperties
29
29
  });
30
- var import_path_to_regexp = __toModule(require("path-to-regexp"));
31
30
  var import_qs = __toModule(require("qs"));
31
+ var import_path_to_regexp = __toModule(require("path-to-regexp"));
32
+ var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
33
+ function decodeParam(val) {
34
+ if (typeof val !== "string" || val.length === 0) {
35
+ return val;
36
+ }
37
+ return decodeURIComponent(val);
38
+ }
32
39
  function getRequestProperties(pattern, req) {
33
40
  const {url = "/"} = req;
34
41
  const [pathname, search] = url.split("?");
@@ -41,7 +48,7 @@ function getRequestProperties(pattern, req) {
41
48
  for (let i = 1; i < matched.length; i++) {
42
49
  const key = keys[i - 1];
43
50
  const prop = key.name;
44
- const val = decode_param(matched[i]);
51
+ const val = decodeParam(matched[i]);
45
52
  if (val !== void 0 || !Object.hasOwnProperty.call(params, prop)) {
46
53
  params[prop] = val;
47
54
  }
@@ -54,15 +61,9 @@ function getRequestProperties(pattern, req) {
54
61
  }
55
62
  return;
56
63
  }
57
- function isSupportedEnvironment(environmentConfig, targetEnvironment) {
58
- if (!!targetEnvironment && targetEnvironment !== environmentConfig?.default && !environmentConfig?.supported?.includes(targetEnvironment)) {
59
- return false;
60
- }
61
- return true;
62
- }
63
- function decode_param(val) {
64
- if (typeof val !== "string" || val.length === 0) {
65
- return val;
66
- }
67
- return decodeURIComponent(val);
64
+ async function getRequestImporter(req, moduleRegistry) {
65
+ const importerSpecifier = req.query.importer;
66
+ const importerModuleId = (0, import_shared_utils.explodeSpecifier)(importerSpecifier);
67
+ const {entry} = await moduleRegistry.getModuleEntry(importerModuleId);
68
+ return entry;
68
69
  }
@@ -0,0 +1,151 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, {get: all[name], enumerable: true});
11
+ };
12
+ var __exportStar = (target, module2, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && key !== "default")
16
+ __defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});
17
+ }
18
+ return target;
19
+ };
20
+ var __toModule = (module2) => {
21
+ return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
22
+ };
23
+
24
+ // packages/@lwrjs/core/src/middleware/view-middleware.ts
25
+ __markAsModule(exports);
26
+ __export(exports, {
27
+ viewMiddleware: () => viewMiddleware
28
+ });
29
+ var import_diagnostics = __toModule(require("@lwrjs/diagnostics"));
30
+ var import_router = __toModule(require("@lwrjs/router"));
31
+ var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
32
+ var import_error_handling = __toModule(require("./utils/error-handling.cjs"));
33
+ var import_view_registry = __toModule(require("@lwrjs/view-registry"));
34
+ var CANONICAL_VIEW_ROUTES = [
35
+ `/:apiVersion/application/:format/l/:locale/ai/:appId`,
36
+ `/:apiVersion/application/:format/l/:locale/e/:environment/ai/:appId`,
37
+ `/:apiVersion/application/:format/ai/:appId`,
38
+ `/:apiVersion/application/:format/e/:environment/ai/:appId`
39
+ ];
40
+ function createViewMiddleware(route, errorRoutes, context, viewHandler) {
41
+ const errorRoute = errorRoutes.find((route2) => route2.status === 500);
42
+ return async (req, res) => {
43
+ if (!req.validateEnvironmentRequest(context.appConfig)) {
44
+ res.status(400);
45
+ res.send(import_diagnostics.descriptions.UNRESOLVABLE.INVALID_ENVIRONMENT(req.params.environment).message);
46
+ return;
47
+ }
48
+ if (!req.validateJsonRequest()) {
49
+ res.status(400);
50
+ res.send(import_diagnostics.descriptions.UNRESOLVABLE.INVALID_JSON().message);
51
+ return;
52
+ }
53
+ const {runtimeEnvironment, runtimeParams} = req.getRuntimeContext(context.runtimeEnvironment);
54
+ const {environment: environmentConfig} = context.appConfig;
55
+ if (!runtimeParams.environment && environmentConfig?.default) {
56
+ runtimeParams.environment = environmentConfig.default;
57
+ }
58
+ const viewRequest = {
59
+ url: req.originalUrl,
60
+ params: req.params,
61
+ query: req.query,
62
+ requestPath: req.path
63
+ };
64
+ const resolve = req.isJsonRequest() ? viewHandler.getViewJson : viewHandler.getViewContent;
65
+ let viewResponse;
66
+ let resolvedRoute;
67
+ try {
68
+ viewResponse = await resolve.call(viewHandler, viewRequest, route, runtimeEnvironment, runtimeParams);
69
+ resolvedRoute = route;
70
+ } catch (err) {
71
+ if (!errorRoute) {
72
+ throw err;
73
+ }
74
+ viewResponse = await resolve.call(viewHandler, viewRequest, errorRoute, runtimeEnvironment, runtimeParams);
75
+ resolvedRoute = errorRoute;
76
+ }
77
+ if (req.isSiteGeneration()) {
78
+ res.setSiteGenerationMetadata(viewResponse.metadata);
79
+ }
80
+ res.type("text/html");
81
+ if (viewResponse.headers) {
82
+ res.set(viewResponse.headers);
83
+ }
84
+ const cacheTtl = (0, import_shared_utils.shortestTtl)(viewResponse.cache?.ttl, resolvedRoute.cache?.ttl);
85
+ if (cacheTtl) {
86
+ res.setHeader("cache-control", `public, max-age=${cacheTtl}`);
87
+ }
88
+ const status = resolvedRoute.status || viewResponse.status || 200;
89
+ res.status(status);
90
+ res.send(viewResponse.body);
91
+ };
92
+ }
93
+ function createConfigMiddleware(routes, context, viewHandler) {
94
+ return async (req, res) => {
95
+ const {runtimeEnvironment, runtimeParams} = req.getRuntimeContext(context.runtimeEnvironment);
96
+ const {appId, encodedViewPath} = req.params;
97
+ const route = routes.find((route2) => route2.id === appId);
98
+ if (!route) {
99
+ res.status(404).send(import_diagnostics.descriptions.UNRESOLVABLE.APP_CONFIG(appId).message);
100
+ return;
101
+ }
102
+ const url = (0, import_shared_utils.decodeViewPath)(encodedViewPath);
103
+ const requestPath = route.path;
104
+ const params = (0, import_shared_utils.extractRequestParams)(requestPath, url, req.params);
105
+ const viewRequest = {
106
+ url,
107
+ params,
108
+ query: req.query,
109
+ requestPath
110
+ };
111
+ const viewResponse = await viewHandler.getViewConfiguration(viewRequest, route, runtimeEnvironment, runtimeParams);
112
+ if (!viewResponse) {
113
+ res.status(404).send(import_diagnostics.descriptions.UNRESOLVABLE.VIEW_CONFIG(url).message);
114
+ return;
115
+ }
116
+ const cacheTtl = (0, import_shared_utils.shortestTtl)(viewResponse.cache?.ttl, route.cache?.ttl);
117
+ if (cacheTtl) {
118
+ res.setHeader("cache-control", `public, max-age=${cacheTtl}`);
119
+ }
120
+ res.status(200);
121
+ res.type("application/javascript");
122
+ res.status(viewResponse.status || 200);
123
+ res.send(viewResponse.body);
124
+ };
125
+ }
126
+ function createNotFoundMiddleware(errorRoutes, context, viewHandler) {
127
+ const notFoundRoute = errorRoutes.find((route) => route.status === 404);
128
+ if (notFoundRoute) {
129
+ return createViewMiddleware(notFoundRoute, errorRoutes, context, viewHandler);
130
+ }
131
+ return (req, res) => {
132
+ res.status(404).send(import_diagnostics.descriptions.UNRESOLVABLE.VIEW(req.originalUrl).message);
133
+ };
134
+ }
135
+ function viewMiddleware(app, context) {
136
+ const {appConfig, viewRegistry, moduleRegistry, routeHandlers} = context;
137
+ const {routes, errorRoutes} = appConfig;
138
+ const viewHandler = new import_view_registry.LwrViewHandler({viewRegistry, moduleRegistry, routeHandlers}, appConfig);
139
+ for (const route of routes) {
140
+ const paths = [route.path];
141
+ const subRoutes = route.subRoutes && (0, import_router.getClientRoutes)(route.subRoutes);
142
+ if (subRoutes) {
143
+ const prefix = route.path === "/" ? "" : route.path;
144
+ subRoutes.routes.forEach((subRoute) => subRoute.uri !== route.path && paths.push(`${prefix}${subRoute.uri}`));
145
+ }
146
+ paths.forEach((routePath) => paths.push(...CANONICAL_VIEW_ROUTES.map((viewRoute) => viewRoute + routePath)));
147
+ app.get(paths, (0, import_error_handling.handleErrors)(createViewMiddleware(route, errorRoutes, context, viewHandler)));
148
+ }
149
+ app.get((0, import_shared_utils.getClientBootstrapConfigurationRoutes)(), (0, import_error_handling.handleErrors)(createConfigMiddleware(routes, context, viewHandler)));
150
+ app.get("/" + app.getRegexWildcard(), (0, import_error_handling.handleErrors)(createNotFoundMiddleware(errorRoutes, context, viewHandler)));
151
+ }
@@ -24,13 +24,20 @@ var __toModule = (module2) => {
24
24
  // packages/@lwrjs/core/src/middleware.ts
25
25
  __markAsModule(exports);
26
26
  __export(exports, {
27
- attachLwrMiddleware: () => attachLwrMiddleware
27
+ assetMiddleware: () => import_asset_middleware.assetMiddleware,
28
+ bundleMiddleware: () => import_bundle_middleware.bundleMiddleware,
29
+ hmrMiddleware: () => import_hmr_middleware.hmrMiddleware,
30
+ localeMiddleware: () => import_locale_middleware.localeMiddleware,
31
+ mappingMiddleware: () => import_mapping_middleware.mappingMiddleware,
32
+ moduleMiddleware: () => import_module_middleware.moduleMiddleware,
33
+ resourceMiddleware: () => import_resource_middleware.resourceMiddleware,
34
+ viewMiddleware: () => import_view_middleware.viewMiddleware
28
35
  });
29
- var import_locale_middleware = __toModule(require("./middlewares/locale-middleware.cjs"));
30
- var import_ui_middleware = __toModule(require("./middlewares/ui-middleware.cjs"));
31
- var import_api_middleware = __toModule(require("./middlewares/api-middleware.cjs"));
32
- function attachLwrMiddleware(app, context) {
33
- (0, import_locale_middleware.default)(app, context);
34
- (0, import_api_middleware.default)(app, context);
35
- (0, import_ui_middleware.default)(app, context);
36
- }
36
+ var import_locale_middleware = __toModule(require("./middleware/locale-middleware.cjs"));
37
+ var import_hmr_middleware = __toModule(require("./middleware/hmr-middleware.cjs"));
38
+ var import_module_middleware = __toModule(require("./middleware/module-middleware.cjs"));
39
+ var import_bundle_middleware = __toModule(require("./middleware/bundle-middleware.cjs"));
40
+ var import_mapping_middleware = __toModule(require("./middleware/mapping-middleware.cjs"));
41
+ var import_asset_middleware = __toModule(require("./middleware/asset-middleware.cjs"));
42
+ var import_view_middleware = __toModule(require("./middleware/view-middleware.cjs"));
43
+ var import_resource_middleware = __toModule(require("./middleware/resource-middleware.cjs"));
@@ -36,17 +36,10 @@ async function warmupServer(config, internalRequestKey) {
36
36
  import_shared_utils.logger.setOptions({dedupe: new Set([import_shared_utils.WARN])});
37
37
  }
38
38
  import_shared_utils.logger.info("[Server Warmup] starting");
39
- const {routes, staticSiteGenerator, port, apiVersion, basePath, lwrVersion, serverMode} = config;
39
+ const {routes, staticSiteGenerator, port, basePath} = config;
40
40
  staticSiteGenerator.outputDir = import_dir.skipDirCreation;
41
41
  const urlRewriteMap = new Map();
42
- const runtimeEnvironment = {
43
- ...(0, import_config.explodeMode)(serverMode),
44
- apiVersion,
45
- basePath,
46
- lwrVersion,
47
- debug: false,
48
- serverMode
49
- };
42
+ const runtimeEnvironment = (0, import_config.getRuntimeEnvironment)(config);
50
43
  await new import_static_generation.default().generateRoutes(runtimeEnvironment, staticSiteGenerator, routes, basePath, new import_network_dispatcher.default(port, internalRequestKey), staticSiteGenerator.outputDir, urlRewriteMap);
51
44
  import_shared_utils.logger.info("[Server Warmup] complete");
52
45
  }