@lwrjs/core 0.9.0-alpha.9 → 0.9.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.
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
@@ -1,82 +0,0 @@
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/context/configurations.ts
25
- __markAsModule(exports);
26
- __export(exports, {
27
- resolveConfigurations: () => resolveConfigurations
28
- });
29
- var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
30
- var import_config = __toModule(require("@lwrjs/config"));
31
- var import_global_data = __toModule(require("./global-data.cjs"));
32
- var import_services = __toModule(require("./services.cjs"));
33
- function normalizeRoutesBootstrap({routes, errorRoutes}) {
34
- [...routes, ...errorRoutes].forEach((route) => {
35
- if (!route.bootstrap) {
36
- route.bootstrap = {...import_shared_utils.DEFAULT_LWR_BOOTSTRAP_CONFIG};
37
- }
38
- });
39
- }
40
- async function runConfigurationsHook(hookPlugins, appConfig, globalData, runtimeEnvironment) {
41
- for (const hookPlugin of hookPlugins) {
42
- await hookPlugin.initConfigs(appConfig, globalData, runtimeEnvironment);
43
- }
44
- try {
45
- (0, import_config.validateLwrAppConfig)(JSON.stringify(appConfig), "post");
46
- } catch (e) {
47
- if (process.env.UNSAFE_IGNORE_CONFIG_VALIDATION === "true") {
48
- import_shared_utils.logger.warn("ignoring config validation errors due to UNSAFE_IGNORE_CONFIG_VALIDATION flag...proceed with caution");
49
- console.dir(e, {depth: null});
50
- } else {
51
- throw e;
52
- }
53
- }
54
- normalizeRoutesBootstrap(appConfig);
55
- return {
56
- appConfig,
57
- globalData,
58
- runtimeEnvironment
59
- };
60
- }
61
- async function resolveConfigurations(config) {
62
- const {
63
- apiVersion,
64
- basePath,
65
- lwrVersion,
66
- serverMode,
67
- globalDataDir,
68
- globalData: globalDataConfig
69
- } = config;
70
- const globalData = (0, import_global_data.getGlobalData)(globalDataDir, globalDataConfig);
71
- const runtimeEnvironment = {
72
- ...(0, import_config.explodeMode)(serverMode),
73
- apiVersion,
74
- basePath,
75
- lwrVersion,
76
- debug: false,
77
- serverMode,
78
- featureFlags: (0, import_shared_utils.getFeatureFlags)()
79
- };
80
- const hookProviders = await (0, import_services.getServices)(config.hooks, void 0, config);
81
- return runConfigurationsHook(hookProviders, config, globalData, runtimeEnvironment);
82
- }
@@ -1,359 +0,0 @@
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/middlewares/api-middleware.ts
25
- __markAsModule(exports);
26
- __export(exports, {
27
- default: () => apiMiddleware
28
- });
29
- var import_diagnostics = __toModule(require("@lwrjs/diagnostics"));
30
- var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
31
- var import_utils = __toModule(require("./utils.cjs"));
32
- function apiMiddleware(app, context) {
33
- const {
34
- appConfig: {environment: environmentConfig},
35
- moduleRegistry,
36
- moduleBundler,
37
- resourceRegistry,
38
- runtimeEnvironment: defaultRuntimeEnvironment
39
- } = context;
40
- const errors = import_diagnostics.descriptions.UNRESOLVABLE;
41
- app.get([
42
- `/:apiVersion/bundle/:format/:compat?/l/:locale/e/:environment/bi/:bundleSpecifier/module/mi/:specifier/latest/:prettyUrl?`,
43
- `/:apiVersion/bundle/:format/:compat?/l/:locale/e/:environment/bi/:bundleSpecifier/module/mi/:specifier/s/:signature/:prettyUrl?`,
44
- `/:apiVersion/bundle/:format/:compat?/l/:locale/bi/:bundleSpecifier/module/mi/:specifier/latest/:prettyUrl?`,
45
- `/:apiVersion/bundle/:format/:compat?/l/:locale/bi/:bundleSpecifier/module/mi/:specifier/s/:signature/:prettyUrl?`,
46
- `/:apiVersion/bundle/:format/:compat?/e/:environment/bi/:bundleSpecifier/module/mi/:specifier/latest/:prettyUrl?`,
47
- `/:apiVersion/bundle/:format/:compat?/e/:environment/bi/:bundleSpecifier/module/mi/:specifier/s/:signature/:prettyUrl?`,
48
- `/:apiVersion/bundle/:format/:compat?/bi/:bundleSpecifier/module/mi/:specifier/latest/:prettyUrl?`,
49
- `/:apiVersion/bundle/:format/:compat?/bi/:bundleSpecifier/module/mi/:specifier/s/:signature/:prettyUrl?`
50
- ], async (req, res) => {
51
- const runtimeContext = req.getRuntimeContext(defaultRuntimeEnvironment);
52
- const {runtimeEnvironment, runtimeParams} = runtimeContext;
53
- const targetEnvironment = runtimeParams.environment;
54
- if (!(0, import_utils.isSupportedEnvironment)(environmentConfig, targetEnvironment)) {
55
- res.status(400).send({error: `Environment "${targetEnvironment}" is not supported`});
56
- return;
57
- }
58
- let moduleId, signature;
59
- try {
60
- ({moduleId, signature} = (0, import_shared_utils.getModuleIdentity)(req));
61
- const sourceMapUrl = req.path.replace("/bundle/", "/sourcemaps/bundle/");
62
- const sourceMapRuntimeContext = {...runtimeEnvironment, sourceMapUrl};
63
- const importerSpecifier = req.query.importer;
64
- if (importerSpecifier) {
65
- const importerModuleId = (0, import_shared_utils.explodeSpecifier)(importerSpecifier);
66
- const {entry} = await moduleRegistry.getModuleEntry(importerModuleId);
67
- const versionedModuleEntry = await moduleRegistry.getModuleEntry({
68
- ...moduleId,
69
- importer: entry
70
- });
71
- const uri = await moduleRegistry.resolveModuleUri({...moduleId, version: versionedModuleEntry.version}, runtimeEnvironment, runtimeParams);
72
- res.set({
73
- Location: uri
74
- });
75
- res.sendStatus(302);
76
- return;
77
- }
78
- const bundleDef = await moduleBundler.getModuleBundle(moduleId, sourceMapRuntimeContext, runtimeParams);
79
- if (signature !== import_shared_utils.LATEST_SIGNATURE) {
80
- res.setHeader("Cache-control", "public, max-age=31536000, immutable");
81
- }
82
- const resolvedUris = [];
83
- if (req.isSiteGeneration()) {
84
- if (bundleDef.bundleRecord.imports) {
85
- for (const theImport of bundleDef.bundleRecord.imports) {
86
- const childSpecifier = theImport.specifier;
87
- const id = await (0, import_shared_utils.getVersionedModuleId)(childSpecifier, moduleRegistry);
88
- const uri = await moduleRegistry.resolveModuleUri(id, runtimeEnvironment, runtimeParams);
89
- resolvedUris.push(uri);
90
- }
91
- }
92
- if (bundleDef.bundleRecord.dynamicImports) {
93
- for (const theImport of bundleDef.bundleRecord.dynamicImports) {
94
- const childSpecifier = theImport.specifier;
95
- const id = await (0, import_shared_utils.getVersionedModuleId)(childSpecifier, moduleRegistry);
96
- const uri = await moduleRegistry.resolveModuleUri(id, runtimeEnvironment, runtimeParams);
97
- resolvedUris.push(uri);
98
- }
99
- }
100
- }
101
- res.setMetadata({moduleDefinition: bundleDef, resolvedUris});
102
- res.type("application/javascript").send(bundleDef.code);
103
- } catch (e) {
104
- console.log(e);
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
- }
108
- });
109
- app.get([
110
- `/:apiVersion/bundle/:format/:compat?/l/:locale/e/:environment/bi/:bundleSpecifier/module/mi/:specifier`,
111
- `/:apiVersion/bundle/:format/:compat?/l/:locale/bi/:bundleSpecifier/module/mi/:specifier`,
112
- `/:apiVersion/bundle/:format/:compat?/e/:environment/bi/:bundleSpecifier/module/mi/:specifier`,
113
- `/:apiVersion/bundle/:format/:compat?/bi/:bundleSpecifier/module/mi/:specifier`
114
- ], async (req, res) => {
115
- const ctx = req.getRuntimeContext(defaultRuntimeEnvironment);
116
- const targetEnvironment = ctx.runtimeParams.environment;
117
- if (!(0, import_utils.isSupportedEnvironment)(environmentConfig, targetEnvironment)) {
118
- res.status(400).send({error: `Environment "${targetEnvironment}" is not supported`});
119
- return;
120
- }
121
- let moduleId;
122
- try {
123
- ({moduleId} = (0, import_shared_utils.getModuleIdentity)(req));
124
- const importerSpecifier = req.query.importer;
125
- if (importerSpecifier) {
126
- const importerModuleId = (0, import_shared_utils.explodeSpecifier)(importerSpecifier);
127
- const {entry} = await moduleRegistry.getModuleEntry(importerModuleId);
128
- moduleId = {...moduleId, importer: entry};
129
- }
130
- const {ownHash, moduleEntry} = await moduleRegistry.getModule(moduleId, ctx.runtimeParams);
131
- if (ownHash) {
132
- const jsonQuery = req.isJsonRequest() ? `${ctx.runtimeEnvironment.debug ? "&" : "?"}json` : "";
133
- const uri = await moduleRegistry.resolveModuleUri({...moduleId, version: moduleEntry.version}, ctx.runtimeEnvironment, ctx.runtimeParams, ownHash);
134
- res.set({
135
- Location: `${uri}${jsonQuery}`
136
- });
137
- res.sendStatus(302);
138
- }
139
- } catch (e) {
140
- console.log(e);
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
- }
144
- });
145
- app.get([
146
- `/:apiVersion/sourcemaps/bundle/:format/:compat?/l/:locale/e/:environment/bi/:bundleSpecifier/module/mi/:specifier/latest/:prettyUrl?`,
147
- `/:apiVersion/sourcemaps/bundle/:format/:compat?/l/:locale/e/:environment/bi/:bundleSpecifier/module/mi/:specifier/s/:signature/:prettyUrl?`,
148
- `/:apiVersion/sourcemaps/bundle/:format/:compat?/l/:locale/bi/:bundleSpecifier/module/mi/:specifier/latest/:prettyUrl?`,
149
- `/:apiVersion/sourcemaps/bundle/:format/:compat?/l/:locale/bi/:bundleSpecifier/module/mi/:specifier/s/:signature/:prettyUrl?`,
150
- `/:apiVersion/sourcemaps/bundle/:format/:compat?/e/:environment/bi/:bundleSpecifier/module/mi/:specifier/latest/:prettyUrl?`,
151
- `/:apiVersion/sourcemaps/bundle/:format/:compat?/e/:environment/bi/:bundleSpecifier/module/mi/:specifier/s/:signature/:prettyUrl?`,
152
- `/:apiVersion/sourcemaps/bundle/:format/:compat?/bi/:bundleSpecifier/module/mi/:specifier/latest/:prettyUrl?`,
153
- `/:apiVersion/sourcemaps/bundle/:format/:compat?/bi/:bundleSpecifier/module/mi/:specifier/s/:signature/:prettyUrl?`
154
- ], async (req, res) => {
155
- const runtimeContext = req.getRuntimeContext(defaultRuntimeEnvironment);
156
- const {runtimeParams, runtimeEnvironment} = runtimeContext;
157
- const targetEnvironment = runtimeParams.environment;
158
- if (!(0, import_utils.isSupportedEnvironment)(environmentConfig, targetEnvironment)) {
159
- res.status(400).send({error: `Environment "${targetEnvironment}" is not supported`});
160
- return;
161
- }
162
- let moduleId, signature;
163
- try {
164
- ({moduleId, signature} = (0, import_shared_utils.getModuleIdentity)(req));
165
- const bundleDef = await moduleBundler.getModuleBundle(moduleId, runtimeEnvironment);
166
- if (signature !== import_shared_utils.LATEST_SIGNATURE) {
167
- res.setHeader("Cache-control", "public, max-age=31536000, immutable");
168
- }
169
- res.type("application/json").send(bundleDef.map);
170
- } catch (e) {
171
- console.log(e);
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
- }
175
- });
176
- app.get([
177
- `/:apiVersion/module/:format/:compat/l/:locale/e/:environment/mi/:specifier/latest/:prettyUrl?`,
178
- `/:apiVersion/module/:format/:compat/l/:locale/e/:environment/mi/:specifier/s/:signature/:prettyUrl?`,
179
- `/:apiVersion/module/:format/:compat/l/:locale/mi/:specifier/latest/:prettyUrl?`,
180
- `/:apiVersion/module/:format/:compat/l/:locale/mi/:specifier/s/:signature/:prettyUrl?`,
181
- `/:apiVersion/module/:format/:compat/e/:environment/mi/:specifier/latest/:prettyUrl?`,
182
- `/:apiVersion/module/:format/:compat/e/:environment/mi/:specifier/s/:signature/:prettyUrl?`,
183
- `/:apiVersion/module/:format/:compat/mi/:specifier/latest/:prettyUrl?`,
184
- `/:apiVersion/module/:format/:compat/mi/:specifier/s/:signature/:prettyUrl?`
185
- ], async (req, res) => {
186
- const {runtimeEnvironment, runtimeParams} = req.getRuntimeContext(defaultRuntimeEnvironment);
187
- const targetEnvironment = runtimeParams.environment;
188
- if (!(0, import_utils.isSupportedEnvironment)(environmentConfig, targetEnvironment)) {
189
- res.status(400).send({error: `Environment "${targetEnvironment}" is not supported`});
190
- return;
191
- }
192
- let moduleId, signature;
193
- try {
194
- ({moduleId, signature} = (0, import_shared_utils.getModuleIdentity)(req));
195
- if (!req.validateJsonRequest()) {
196
- throw (0, import_diagnostics.createSingleDiagnosticError)({description: errors.INVALID_JSON()}, import_diagnostics.LwrUnresolvableError);
197
- }
198
- const theModule = await moduleRegistry.getLinkedModule(moduleId, runtimeEnvironment, runtimeParams);
199
- const {ownHash, linkedSource} = theModule;
200
- if (signature === import_shared_utils.LATEST_SIGNATURE || ownHash === signature) {
201
- const code = linkedSource;
202
- res.setMetadata({moduleDefinition: theModule});
203
- if (req.isJsonRequest()) {
204
- const json = await (0, import_shared_utils.serializeModuleToJson)(code, theModule, moduleRegistry, runtimeParams);
205
- res.type("application/json").send(json);
206
- } else {
207
- res.type("application/javascript").send(code);
208
- }
209
- } else {
210
- throw (0, import_diagnostics.createSingleDiagnosticError)({description: errors.SIGNED_MODULE(moduleId.specifier, signature)}, import_diagnostics.LwrUnresolvableError);
211
- }
212
- } catch (e) {
213
- console.log(e);
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
- }
217
- });
218
- app.get([
219
- `/:apiVersion/module/:format/:compat/l/:locale/e/:environment/mi/:specifier`,
220
- `/:apiVersion/module/:format/:compat/l/:locale/mi/:specifier`,
221
- `/:apiVersion/module/:format/:compat/e/:environment/mi/:specifier`,
222
- `/:apiVersion/module/:format/:compat/mi/:specifier`
223
- ], async (req, res) => {
224
- const ctx = req.getRuntimeContext(defaultRuntimeEnvironment);
225
- const targetEnvironment = ctx.runtimeParams.environment;
226
- if (!(0, import_utils.isSupportedEnvironment)(environmentConfig, targetEnvironment)) {
227
- res.status(400).send({error: `Environment "${targetEnvironment}" is not supported`});
228
- return;
229
- }
230
- let moduleId;
231
- try {
232
- ({moduleId} = (0, import_shared_utils.getModuleIdentity)(req));
233
- const importerSpecifier = req.query.importer;
234
- if (importerSpecifier) {
235
- const importerModuleId = (0, import_shared_utils.explodeSpecifier)(importerSpecifier);
236
- const {entry} = await moduleRegistry.getModuleEntry(importerModuleId);
237
- moduleId = {...moduleId, importer: entry};
238
- }
239
- const {ownHash, moduleEntry} = await moduleRegistry.getModule(moduleId, ctx.runtimeParams);
240
- if (ownHash) {
241
- const jsonQuery = req.isJsonRequest() ? `${ctx.runtimeEnvironment.debug ? "&" : "?"}json` : "";
242
- const uri = await moduleRegistry.resolveModuleUri({...moduleId, version: moduleEntry.version}, ctx.runtimeEnvironment, ctx.runtimeParams, ownHash);
243
- res.set({
244
- Location: `${uri}${jsonQuery}`
245
- });
246
- res.sendStatus(302);
247
- }
248
- } catch (e) {
249
- console.log(e);
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
- }
253
- });
254
- app.get([
255
- `/:apiVersion/mapping/:format/:compat/l/:locale/e/:environment/bi/:bundleSpecifier/mp/:specifiers`,
256
- `/:apiVersion/mapping/:format/:compat/l/:locale/e/:environment/mp/:specifiers`,
257
- `/:apiVersion/mapping/:format/:compat/l/:locale/bi/:bundleSpecifier/mp/:specifiers`,
258
- `/:apiVersion/mapping/:format/:compat/e/:environment/bi/:bundleSpecifier/mp/:specifiers`,
259
- `/:apiVersion/mapping/:format/:compat/l/:locale/mp/:specifiers`,
260
- `/:apiVersion/mapping/:format/:compat/e/:environment/mp/:specifiers`,
261
- `/:apiVersion/mapping/:format/:compat/bi/:bundleSpecifier/mp/:specifiers`,
262
- `/:apiVersion/mapping/:format/:compat/mp/:specifiers`
263
- ], async (req, res) => {
264
- const requestContext = req.getRuntimeContext(defaultRuntimeEnvironment);
265
- const targetEnvironment = requestContext.runtimeParams.environment;
266
- if (!(0, import_utils.isSupportedEnvironment)(environmentConfig, targetEnvironment)) {
267
- res.status(400).send({error: `Environment "${targetEnvironment}" is not supported`});
268
- return;
269
- }
270
- let moduleIds;
271
- try {
272
- ({moduleIds} = (0, import_shared_utils.getMappingIdentity)(req));
273
- const {runtimeEnvironment, runtimeParams} = requestContext;
274
- const importMetadata = await (0, import_shared_utils.getImportMetadataMappings)(moduleIds, runtimeEnvironment, runtimeParams, moduleRegistry, moduleBundler);
275
- res.setMetadata({importMetadata});
276
- res.status(200).type("application/json").send(importMetadata);
277
- } catch (e) {
278
- console.log(e);
279
- const error = (0, import_diagnostics.createReturnStatus)(`mappings for "${JSON.stringify(moduleIds || req.params?.specifiers)}"`, e);
280
- res.status(error.status).send(error.message);
281
- }
282
- });
283
- app.get([
284
- `/:apiVersion/resource/:format/l/:locale/e/:environment/:specifier`,
285
- `/:apiVersion/resource/:format/l/:locale/:specifier`,
286
- `/:apiVersion/resource/:format/e/:environment/:specifier`,
287
- `/:apiVersion/resource/:format/:specifier`
288
- ], async (req, res) => {
289
- const {runtimeEnvironment, runtimeParams} = req.getRuntimeContext(defaultRuntimeEnvironment);
290
- const targetEnvironment = runtimeParams.environment;
291
- if (!(0, import_utils.isSupportedEnvironment)(environmentConfig, targetEnvironment)) {
292
- res.status(400).send({error: `Environment "${targetEnvironment}" is not supported`});
293
- return;
294
- }
295
- let resourceId;
296
- try {
297
- ({resourceId} = (0, import_shared_utils.getResourceIdentity)(req));
298
- const resource = await resourceRegistry.getResource(resourceId, runtimeEnvironment, runtimeParams);
299
- if (resource && resource.content) {
300
- const type = resource.type === "text/css" ? resource.type : "application/javascript";
301
- res.type(type).send(resource.content);
302
- } else if (resource && resource.stream) {
303
- res.type(resource.type).stream(resource.stream);
304
- } else {
305
- throw (0, import_diagnostics.createSingleDiagnosticError)({description: errors.RESOURCE(resourceId.specifier)}, import_diagnostics.LwrUnresolvableError);
306
- }
307
- res.setMetadata({resource});
308
- } catch (e) {
309
- console.log(e);
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
- }
313
- });
314
- const paths = context.appConfig.assets.map((a) => a.urlPath);
315
- for (let i = 0; i < paths.length; i++) {
316
- paths[i] = paths[i] + app.getRegexWildcard();
317
- }
318
- app.all(paths, async (req, res) => {
319
- const {runtimeEnvironment} = req.getRuntimeContext(defaultRuntimeEnvironment);
320
- try {
321
- const {
322
- assetId: {specifier, type},
323
- signature
324
- } = (0, import_shared_utils.getAssetIdentity)(req);
325
- const assetObj = await context.assetRegistry.getAsset({specifier, signature, type}, runtimeEnvironment);
326
- if (assetObj.mime) {
327
- res.type(assetObj.mime);
328
- }
329
- res.setMetadata({asset: assetObj});
330
- res.stream(assetObj.stream());
331
- } catch (e) {
332
- console.log(e);
333
- const error = (0, import_diagnostics.createReturnStatus)(`asset at "${req.originalUrl}"`, e);
334
- res.status(error.status).send(error.message);
335
- }
336
- });
337
- app.all("/:apiVersion/:assetType/:immutable?/s/:signature/" + app.getRegexWildcard(), async (req, res) => {
338
- const {runtimeEnvironment} = req.getRuntimeContext(defaultRuntimeEnvironment);
339
- const {basePath} = runtimeEnvironment;
340
- const {signature} = req.params;
341
- const {immutable, assetType: type} = req.params;
342
- const specifier = req.params[0] ? `/${req.params[0]}` : req.originalUrl;
343
- const basePathSpecifier = `${basePath}${specifier}`;
344
- try {
345
- const assetObj = await context.assetRegistry.getAsset({specifier: basePathSpecifier, signature, type}, runtimeEnvironment, req.isSiteGeneration());
346
- if (immutable) {
347
- }
348
- if (assetObj.mime) {
349
- res.type(assetObj.mime);
350
- }
351
- res.setMetadata({asset: assetObj});
352
- res.stream(assetObj.stream());
353
- } catch (e) {
354
- console.log(e);
355
- const error = (0, import_diagnostics.createReturnStatus)(`asset at "${specifier}"`, e);
356
- res.status(error.status).type("text/plain").send(error.message);
357
- }
358
- });
359
- }
@@ -1,15 +0,0 @@
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/middlewares/base-middleware.ts
9
- __markAsModule(exports);
10
- __export(exports, {
11
- default: () => baseMiddleware
12
- });
13
- function baseMiddleware(app, _context) {
14
- app.useCompression();
15
- }
@@ -1,183 +0,0 @@
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/middlewares/ui-middleware.ts
25
- __markAsModule(exports);
26
- __export(exports, {
27
- default: () => uiMiddleware
28
- });
29
- var import_ms = __toModule(require("ms"));
30
- var import_diagnostics = __toModule(require("@lwrjs/diagnostics"));
31
- var import_view_registry = __toModule(require("@lwrjs/view-registry"));
32
- var import_utils = __toModule(require("./utils.cjs"));
33
- var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
34
- var import_router = __toModule(require("@lwrjs/router"));
35
- function uiMiddleware(app, context) {
36
- const {viewRegistry, moduleRegistry, runtimeEnvironment: defaultRuntimeEnvironment} = context;
37
- const {environment: environmentConfig, routes, errorRoutes} = context.appConfig;
38
- const route404 = errorRoutes.find((r) => r.status === 404);
39
- const route500 = errorRoutes.find((r) => r.status === 500);
40
- const viewHandler = new import_view_registry.LwrViewHandler({viewRegistry, moduleRegistry}, context.appConfig);
41
- async function sendViewResponse(req, res, route, defaultStatus = 200) {
42
- if (!req.validateJsonRequest()) {
43
- res.status(400).send({error: "Accept header and json query parameter are incompatible"});
44
- return;
45
- }
46
- req.params.bundleSpecifier = defaultRuntimeEnvironment.bundle ? "0" : void 0;
47
- const {runtimeEnvironment, runtimeParams} = req.getRuntimeContext(defaultRuntimeEnvironment);
48
- const targetEnvironment = runtimeParams.environment;
49
- if (!(0, import_utils.isSupportedEnvironment)(environmentConfig, targetEnvironment)) {
50
- res.status(400).send({error: `Environment "${targetEnvironment}" is not supported`});
51
- return;
52
- }
53
- if (!targetEnvironment && environmentConfig?.default) {
54
- runtimeParams.environment = environmentConfig.default;
55
- }
56
- try {
57
- const viewRequest = {
58
- url: req.originalUrl,
59
- params: req.params,
60
- query: req.query,
61
- requestPath: req.path
62
- };
63
- const response = req.isJsonRequest() ? await viewHandler.getViewJson(viewRequest, route, runtimeEnvironment, runtimeParams) : await viewHandler.getViewContent(viewRequest, route, runtimeEnvironment, runtimeParams);
64
- const cacheTtl = response.cache?.ttl || route.cache?.ttl;
65
- let ttl;
66
- if (cacheTtl) {
67
- ttl = typeof cacheTtl === "string" ? (0, import_ms.default)(cacheTtl) / 1e3 : cacheTtl;
68
- res.setHeader("Cache-control", `public, max-age=${ttl}`);
69
- }
70
- const headers = response.headers || {
71
- "Content-Type": "text/html",
72
- ...cacheTtl && {"Cache-control": `public, max-age=${ttl}`}
73
- };
74
- res.set(headers);
75
- res.setMetadata(response.metadata);
76
- const status = response.status ? response.status : defaultStatus;
77
- res.status(status).send(response.body);
78
- } catch (error) {
79
- if (error instanceof import_diagnostics.DiagnosticsError) {
80
- console.error("LWR Diagnostic Error: " + error.message);
81
- console.error(error.diagnostics);
82
- console.error(error.stack);
83
- } else {
84
- console.error(error);
85
- }
86
- if (route500 && defaultStatus !== 500) {
87
- await sendViewResponse(req, res, route500, 500);
88
- } else {
89
- res.status(500).send(`500 - Error retrieving view for route "${route.id}"`);
90
- }
91
- }
92
- }
93
- async function sendConfigurationResponse(req, res, defaultStatus = 200) {
94
- req.params.bundleSpecifier = defaultRuntimeEnvironment.bundle ? "0" : void 0;
95
- const {runtimeEnvironment, runtimeParams} = req.getRuntimeContext(defaultRuntimeEnvironment);
96
- const {appId, encodedViewPath} = req.params;
97
- const route = routes.find((route2) => route2.id === appId);
98
- if (!route) {
99
- res.status(404).send({error: `LWR configuration for appId "${appId}" is not available`});
100
- return;
101
- }
102
- try {
103
- const url = (0, import_shared_utils.decodeViewPath)(encodedViewPath);
104
- const requestPath = route.path;
105
- const params = (0, import_shared_utils.extractRequestParams)(requestPath, url, req.params);
106
- const viewRequest = {
107
- url,
108
- params,
109
- query: req.query,
110
- requestPath
111
- };
112
- const response = await viewHandler.getViewConfiguration(viewRequest, route, runtimeEnvironment, runtimeParams);
113
- if (!response) {
114
- res.status(404).send({error: `LWR configuration for viewPath "${url}" is not available`});
115
- return;
116
- }
117
- const cacheTtl = response.cache?.ttl || route.cache?.ttl;
118
- let ttl;
119
- if (cacheTtl) {
120
- ttl = typeof cacheTtl === "string" ? (0, import_ms.default)(cacheTtl) / 1e3 : cacheTtl;
121
- }
122
- res.set({
123
- "Content-Type": "application/javascript",
124
- ...cacheTtl && {"Cache-control": `public, max-age=${ttl}`}
125
- });
126
- const status = response.status ? response.status : defaultStatus;
127
- res.status(status).send(response.body);
128
- } catch (error) {
129
- if (error instanceof import_diagnostics.DiagnosticsError) {
130
- console.error("LWR Diagnostic Error: " + error.message);
131
- console.error(error.diagnostics);
132
- console.error(error.stack);
133
- } else {
134
- console.error(error);
135
- }
136
- if (route500 && defaultStatus !== 500) {
137
- await sendViewResponse(req, res, route500, 500);
138
- } else {
139
- res.status(500).send(`500 - Error retrieving route "${route.id}"`);
140
- }
141
- }
142
- }
143
- routes.forEach((route) => {
144
- if (route.method === "post") {
145
- app.post(route.path, async (req, res) => {
146
- await sendViewResponse(req, res, route);
147
- });
148
- } else {
149
- const serverPath = route.path;
150
- const paths = [serverPath];
151
- const subRoutes = route.subRoutes ? (0, import_router.getClientRoutes)(route.subRoutes) : void 0;
152
- if (subRoutes) {
153
- const prefix = serverPath === "/" ? "" : serverPath;
154
- subRoutes.routes.forEach((r) => paths.push(`${prefix}${r.uri}`));
155
- }
156
- paths.forEach((path) => {
157
- app.get(path, async (req, res) => {
158
- await sendViewResponse(req, res, route);
159
- });
160
- app.get([
161
- `/:apiVersion/application/:format/l/:locale/ai/:appId${path}`,
162
- `/:apiVersion/application/:format/l/:locale/e/:environment/ai/:appId${path}`,
163
- `/:apiVersion/application/:format/ai/:appId${path}`,
164
- `/:apiVersion/application/:format/e/:environment/ai/:appId${path}`
165
- ], async (req, res) => {
166
- await sendViewResponse(req, res, route);
167
- });
168
- });
169
- }
170
- });
171
- const clientBootstrapConfigurationRoutes = (0, import_shared_utils.getClientBootstrapConfigurationRoutes)();
172
- app.get(clientBootstrapConfigurationRoutes, async (req, res) => {
173
- await sendConfigurationResponse(req, res);
174
- });
175
- app.initRoutes();
176
- app.use(async (req, res) => {
177
- if (route404) {
178
- await sendViewResponse(req, res, route404, 404);
179
- } else {
180
- res.status(404).send("404 - This page does not exist");
181
- }
182
- });
183
- }