@lwrjs/core 0.9.0-alpha.8 → 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.
- package/build/cjs/context/provider.cjs +9 -5
- package/build/cjs/context/server.cjs +6 -6
- package/build/cjs/index.cjs +66 -41
- package/build/cjs/middleware/asset-middleware.cjs +70 -0
- package/build/cjs/middleware/bundle-middleware.cjs +113 -0
- package/build/cjs/{middlewares → middleware}/hmr-middleware.cjs +6 -6
- package/build/cjs/{middlewares → middleware}/locale-middleware.cjs +2 -2
- package/build/cjs/middleware/mapping-middleware.cjs +61 -0
- package/build/cjs/middleware/module-middleware.cjs +88 -0
- package/build/cjs/middleware/redirects/unsigned-module-redirect.cjs +37 -0
- package/build/cjs/middleware/resource-middleware.cjs +64 -0
- package/build/cjs/{context/global-data.cjs → middleware/utils/error-handling.cjs} +26 -24
- package/build/cjs/middleware/utils/identity.cjs +92 -0
- package/build/cjs/{context/services.cjs → middleware/utils/metadata.cjs} +19 -20
- package/build/cjs/{middlewares/utils.cjs → middleware/utils/request.cjs} +17 -16
- package/build/cjs/middleware/view-middleware.cjs +151 -0
- package/build/cjs/middleware.cjs +16 -9
- package/build/cjs/tools/server-warmup.cjs +2 -9
- package/build/cjs/tools/static-generation.cjs +190 -62
- package/build/es/context/provider.js +5 -3
- package/build/es/context/server.d.ts +1 -1
- package/build/es/context/server.js +6 -5
- package/build/es/index.d.ts +3 -2
- package/build/es/index.js +85 -49
- package/build/es/middleware/asset-middleware.d.ts +3 -0
- package/build/es/middleware/asset-middleware.js +42 -0
- package/build/es/middleware/bundle-middleware.d.ts +3 -0
- package/build/es/middleware/bundle-middleware.js +88 -0
- package/build/es/middleware/hmr-middleware.d.ts +5 -0
- package/build/es/{middlewares → middleware}/hmr-middleware.js +4 -4
- package/build/es/middleware/locale-middleware.d.ts +3 -0
- package/build/es/{middlewares → middleware}/locale-middleware.js +2 -1
- package/build/es/middleware/mapping-middleware.d.ts +3 -0
- package/build/es/middleware/mapping-middleware.js +34 -0
- package/build/es/middleware/module-middleware.d.ts +3 -0
- package/build/es/middleware/module-middleware.js +64 -0
- package/build/es/middleware/redirects/unsigned-module-redirect.d.ts +6 -0
- package/build/es/middleware/redirects/unsigned-module-redirect.js +25 -0
- package/build/es/middleware/resource-middleware.d.ts +3 -0
- package/build/es/middleware/resource-middleware.js +37 -0
- package/build/es/middleware/utils/error-handling.d.ts +3 -0
- package/build/es/middleware/utils/error-handling.js +32 -0
- package/build/es/middleware/utils/identity.d.ts +6 -0
- package/build/es/middleware/utils/identity.js +62 -0
- package/build/es/middleware/utils/metadata.d.ts +3 -0
- package/build/es/middleware/utils/metadata.js +24 -0
- package/build/es/middleware/utils/request.d.ts +15 -0
- package/build/es/{middlewares/utils.js → middleware/utils/request.js} +15 -23
- package/build/es/middleware/view-middleware.d.ts +3 -0
- package/build/es/middleware/view-middleware.js +136 -0
- package/build/es/middleware.d.ts +8 -14
- package/build/es/middleware.js +12 -20
- package/build/es/tools/server-warmup.js +3 -10
- package/build/es/tools/static-generation.d.ts +11 -1
- package/build/es/tools/static-generation.js +230 -79
- package/build/es/tools/types.d.ts +3 -2
- package/package.json +33 -34
- package/build/cjs/context/configurations.cjs +0 -82
- package/build/cjs/middlewares/api-middleware.cjs +0 -359
- package/build/cjs/middlewares/base-middleware.cjs +0 -15
- package/build/cjs/middlewares/ui-middleware.cjs +0 -183
- package/build/cjs/tools/server-build.cjs +0 -182
- package/build/es/context/configurations.d.ts +0 -9
- package/build/es/context/configurations.js +0 -53
- package/build/es/context/global-data.d.ts +0 -3
- package/build/es/context/global-data.js +0 -29
- package/build/es/context/services.d.ts +0 -3
- package/build/es/context/services.js +0 -27
- package/build/es/middlewares/api-middleware.d.ts +0 -3
- package/build/es/middlewares/api-middleware.js +0 -410
- package/build/es/middlewares/base-middleware.d.ts +0 -3
- package/build/es/middlewares/base-middleware.js +0 -4
- package/build/es/middlewares/hmr-middleware.d.ts +0 -5
- package/build/es/middlewares/locale-middleware.d.ts +0 -3
- package/build/es/middlewares/ui-middleware.d.ts +0 -3
- package/build/es/middlewares/ui-middleware.js +0 -186
- package/build/es/middlewares/utils.d.ts +0 -22
- package/build/es/tools/server-build.d.ts +0 -14
- package/build/es/tools/server-build.js +0 -182
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { explodeSpecifier, explodeSpecifiers, LATEST_SIGNATURE } from '@lwrjs/shared-utils';
|
|
2
|
+
import { createSingleDiagnosticError, descriptions, LwrUnresolvableError } from '@lwrjs/diagnostics';
|
|
3
|
+
function validateSpecifier(specifer) {
|
|
4
|
+
return specifer.indexOf('../') < 0;
|
|
5
|
+
}
|
|
6
|
+
export function getModuleIdentity(req, importer) {
|
|
7
|
+
const { specifier, signature } = req.params;
|
|
8
|
+
if (validateSpecifier(specifier) === false) {
|
|
9
|
+
throw createSingleDiagnosticError({
|
|
10
|
+
description: descriptions.UNRESOLVABLE.INVALID_SPECIFIER(specifier),
|
|
11
|
+
}, LwrUnresolvableError);
|
|
12
|
+
}
|
|
13
|
+
const moduleId = explodeSpecifier(specifier);
|
|
14
|
+
return {
|
|
15
|
+
moduleId: {
|
|
16
|
+
...moduleId,
|
|
17
|
+
importer,
|
|
18
|
+
},
|
|
19
|
+
signature,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function getMappingIdentity(req) {
|
|
23
|
+
const { specifiers } = req.params;
|
|
24
|
+
const moduleIds = explodeSpecifiers(specifiers).map((obj) => ({
|
|
25
|
+
...obj,
|
|
26
|
+
importer: req.query.importer,
|
|
27
|
+
}));
|
|
28
|
+
return {
|
|
29
|
+
moduleIds,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function getResourceIdentity(req) {
|
|
33
|
+
const { specifier, signature = LATEST_SIGNATURE } = req.params;
|
|
34
|
+
if (validateSpecifier(specifier) === false) {
|
|
35
|
+
throw createSingleDiagnosticError({
|
|
36
|
+
description: descriptions.UNRESOLVABLE.INVALID_SPECIFIER(specifier),
|
|
37
|
+
}, LwrUnresolvableError);
|
|
38
|
+
}
|
|
39
|
+
const resourceId = explodeSpecifier(specifier);
|
|
40
|
+
return {
|
|
41
|
+
resourceId,
|
|
42
|
+
signature,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function getAssetIdentity(req) {
|
|
46
|
+
const { signature, immutable, assetType: type } = req.params;
|
|
47
|
+
const specifier = signature && type ? '/' + req.params[0] : req.originalUrl.split('?')[0];
|
|
48
|
+
if (validateSpecifier(specifier) === false) {
|
|
49
|
+
throw createSingleDiagnosticError({
|
|
50
|
+
description: descriptions.UNRESOLVABLE.INVALID_SPECIFIER(specifier),
|
|
51
|
+
}, LwrUnresolvableError);
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
immutable,
|
|
55
|
+
assetId: {
|
|
56
|
+
specifier,
|
|
57
|
+
type,
|
|
58
|
+
},
|
|
59
|
+
signature: signature || LATEST_SIGNATURE,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=identity.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { BundleDefinition, ModuleBundler, ModuleRegistry, RuntimeEnvironment, RuntimeParams } from '@lwrjs/types';
|
|
2
|
+
export declare function normalizeResolvedUris(bundleDefinition: BundleDefinition, runtimeEnvironment: RuntimeEnvironment, runtimeParams: RuntimeParams, moduleBundler: ModuleBundler, moduleRegistry: ModuleRegistry): Promise<string[]>;
|
|
3
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { getVersionedModuleId } from '@lwrjs/shared-utils';
|
|
2
|
+
export async function normalizeResolvedUris(bundleDefinition, runtimeEnvironment, runtimeParams, moduleBundler, moduleRegistry) {
|
|
3
|
+
const resolvedUris = [];
|
|
4
|
+
// TODO might be able to remove this in the future but not sure how to properly send
|
|
5
|
+
// back bundleRecord imports with absolute uris (lwc is the main one)
|
|
6
|
+
if (bundleDefinition.bundleRecord.imports) {
|
|
7
|
+
for (const theImport of bundleDefinition.bundleRecord.imports) {
|
|
8
|
+
const childSpecifier = theImport.specifier;
|
|
9
|
+
const id = await getVersionedModuleId(childSpecifier, moduleRegistry);
|
|
10
|
+
const uri = await moduleBundler.resolveModuleUri(id, runtimeEnvironment, runtimeParams);
|
|
11
|
+
resolvedUris.push(uri);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
if (bundleDefinition.bundleRecord.dynamicImports) {
|
|
15
|
+
for (const theImport of bundleDefinition.bundleRecord.dynamicImports) {
|
|
16
|
+
const childSpecifier = theImport.specifier;
|
|
17
|
+
const id = await getVersionedModuleId(childSpecifier, moduleRegistry);
|
|
18
|
+
const uri = await moduleBundler.resolveModuleUri(id, runtimeEnvironment, runtimeParams);
|
|
19
|
+
resolvedUris.push(uri);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return resolvedUris;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { MiddlewareRequest, ModuleRegistry } from '@lwrjs/types';
|
|
3
|
+
import http from 'http';
|
|
4
|
+
import qs from 'qs';
|
|
5
|
+
interface Params {
|
|
6
|
+
[key: string]: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function getRequestProperties(pattern: string, req: http.IncomingMessage): {
|
|
9
|
+
url: string;
|
|
10
|
+
params: Params;
|
|
11
|
+
query: qs.ParsedQs;
|
|
12
|
+
} | undefined;
|
|
13
|
+
export declare function getRequestImporter(req: MiddlewareRequest, moduleRegistry: ModuleRegistry): Promise<string>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=request.d.ts.map
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
import { pathToRegexp } from 'path-to-regexp';
|
|
2
1
|
import qs from 'qs';
|
|
2
|
+
import { pathToRegexp } from 'path-to-regexp';
|
|
3
|
+
import { explodeSpecifier } from '@lwrjs/shared-utils';
|
|
4
|
+
function decodeParam(val) {
|
|
5
|
+
if (typeof val !== 'string' || val.length === 0) {
|
|
6
|
+
return val;
|
|
7
|
+
}
|
|
8
|
+
return decodeURIComponent(val);
|
|
9
|
+
}
|
|
3
10
|
// Adapted from https://github.com/expressjs/express/blob/master/lib/router/layer.js
|
|
4
11
|
export function getRequestProperties(pattern, req) {
|
|
5
12
|
const { url = '/' } = req;
|
|
@@ -13,7 +20,7 @@ export function getRequestProperties(pattern, req) {
|
|
|
13
20
|
for (let i = 1; i < matched.length; i++) {
|
|
14
21
|
const key = keys[i - 1];
|
|
15
22
|
const prop = key.name;
|
|
16
|
-
const val =
|
|
23
|
+
const val = decodeParam(matched[i]);
|
|
17
24
|
if (val !== undefined || !Object.hasOwnProperty.call(params, prop)) {
|
|
18
25
|
params[prop] = val;
|
|
19
26
|
}
|
|
@@ -26,25 +33,10 @@ export function getRequestProperties(pattern, req) {
|
|
|
26
33
|
}
|
|
27
34
|
return;
|
|
28
35
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
* @returns boolean
|
|
35
|
-
*/
|
|
36
|
-
export function isSupportedEnvironment(environmentConfig, targetEnvironment) {
|
|
37
|
-
if (!!targetEnvironment &&
|
|
38
|
-
targetEnvironment !== environmentConfig?.default &&
|
|
39
|
-
!environmentConfig?.supported?.includes(targetEnvironment)) {
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
return true;
|
|
43
|
-
}
|
|
44
|
-
function decode_param(val) {
|
|
45
|
-
if (typeof val !== 'string' || val.length === 0) {
|
|
46
|
-
return val;
|
|
47
|
-
}
|
|
48
|
-
return decodeURIComponent(val);
|
|
36
|
+
export async function getRequestImporter(req, moduleRegistry) {
|
|
37
|
+
const importerSpecifier = req.query.importer;
|
|
38
|
+
const importerModuleId = explodeSpecifier(importerSpecifier);
|
|
39
|
+
const { entry } = await moduleRegistry.getModuleEntry(importerModuleId);
|
|
40
|
+
return entry;
|
|
49
41
|
}
|
|
50
|
-
//# sourceMappingURL=
|
|
42
|
+
//# sourceMappingURL=request.js.map
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { descriptions } from '@lwrjs/diagnostics';
|
|
2
|
+
import { getClientRoutes } from '@lwrjs/router';
|
|
3
|
+
import { decodeViewPath, extractRequestParams, getClientBootstrapConfigurationRoutes, shortestTtl, } from '@lwrjs/shared-utils';
|
|
4
|
+
import { handleErrors } from './utils/error-handling.js';
|
|
5
|
+
import { LwrViewHandler } from '@lwrjs/view-registry';
|
|
6
|
+
const CANONICAL_VIEW_ROUTES = [
|
|
7
|
+
`/:apiVersion/application/:format/l/:locale/ai/:appId`,
|
|
8
|
+
`/:apiVersion/application/:format/l/:locale/e/:environment/ai/:appId`,
|
|
9
|
+
`/:apiVersion/application/:format/ai/:appId`,
|
|
10
|
+
`/:apiVersion/application/:format/e/:environment/ai/:appId`,
|
|
11
|
+
];
|
|
12
|
+
function createViewMiddleware(route, errorRoutes, context, viewHandler) {
|
|
13
|
+
const errorRoute = errorRoutes.find((route) => route.status === 500);
|
|
14
|
+
return async (req, res) => {
|
|
15
|
+
if (!req.validateEnvironmentRequest(context.appConfig)) {
|
|
16
|
+
res.status(400);
|
|
17
|
+
res.send(descriptions.UNRESOLVABLE.INVALID_ENVIRONMENT(req.params.environment).message);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (!req.validateJsonRequest()) {
|
|
21
|
+
res.status(400);
|
|
22
|
+
res.send(descriptions.UNRESOLVABLE.INVALID_JSON().message);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const { runtimeEnvironment, runtimeParams } = req.getRuntimeContext(context.runtimeEnvironment);
|
|
26
|
+
// set the default environment if an environment is configured in the app config
|
|
27
|
+
const { environment: environmentConfig } = context.appConfig;
|
|
28
|
+
if (!runtimeParams.environment && environmentConfig?.default) {
|
|
29
|
+
runtimeParams.environment = environmentConfig.default;
|
|
30
|
+
}
|
|
31
|
+
const viewRequest = {
|
|
32
|
+
url: req.originalUrl,
|
|
33
|
+
params: req.params,
|
|
34
|
+
query: req.query,
|
|
35
|
+
requestPath: req.path,
|
|
36
|
+
};
|
|
37
|
+
const resolve = req.isJsonRequest() ? viewHandler.getViewJson : viewHandler.getViewContent;
|
|
38
|
+
let viewResponse;
|
|
39
|
+
let resolvedRoute;
|
|
40
|
+
try {
|
|
41
|
+
viewResponse = await resolve.call(viewHandler, viewRequest, route, runtimeEnvironment, runtimeParams);
|
|
42
|
+
resolvedRoute = route;
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
if (!errorRoute) {
|
|
46
|
+
throw err;
|
|
47
|
+
}
|
|
48
|
+
viewResponse = await resolve.call(viewHandler, viewRequest, errorRoute, runtimeEnvironment, runtimeParams);
|
|
49
|
+
resolvedRoute = errorRoute;
|
|
50
|
+
}
|
|
51
|
+
if (req.isSiteGeneration()) {
|
|
52
|
+
res.setSiteGenerationMetadata(viewResponse.metadata);
|
|
53
|
+
}
|
|
54
|
+
// view response will be html by default
|
|
55
|
+
res.type('text/html');
|
|
56
|
+
// the default content type can be overridden if specified by the view response
|
|
57
|
+
if (viewResponse.headers) {
|
|
58
|
+
res.set(viewResponse.headers);
|
|
59
|
+
}
|
|
60
|
+
// pick the shortest TTL between the view response and route object
|
|
61
|
+
const cacheTtl = shortestTtl(viewResponse.cache?.ttl, resolvedRoute.cache?.ttl);
|
|
62
|
+
if (cacheTtl) {
|
|
63
|
+
res.setHeader('cache-control', `public, max-age=${cacheTtl}`);
|
|
64
|
+
}
|
|
65
|
+
const status = resolvedRoute.status || viewResponse.status || 200;
|
|
66
|
+
res.status(status);
|
|
67
|
+
res.send(viewResponse.body);
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function createConfigMiddleware(routes, context, viewHandler) {
|
|
71
|
+
return async (req, res) => {
|
|
72
|
+
const { runtimeEnvironment, runtimeParams } = req.getRuntimeContext(context.runtimeEnvironment);
|
|
73
|
+
const { appId, encodedViewPath } = req.params;
|
|
74
|
+
// match the app id to a route
|
|
75
|
+
const route = routes.find((route) => route.id === appId);
|
|
76
|
+
if (!route) {
|
|
77
|
+
res.status(404).send(descriptions.UNRESOLVABLE.APP_CONFIG(appId).message);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
// decode the resolved view path and extract any params.
|
|
81
|
+
const url = decodeViewPath(encodedViewPath);
|
|
82
|
+
const requestPath = route.path;
|
|
83
|
+
const params = extractRequestParams(requestPath, url, req.params);
|
|
84
|
+
const viewRequest = {
|
|
85
|
+
url,
|
|
86
|
+
params,
|
|
87
|
+
query: req.query,
|
|
88
|
+
requestPath,
|
|
89
|
+
};
|
|
90
|
+
const viewResponse = await viewHandler.getViewConfiguration(viewRequest, route, runtimeEnvironment, runtimeParams);
|
|
91
|
+
if (!viewResponse) {
|
|
92
|
+
res.status(404).send(descriptions.UNRESOLVABLE.VIEW_CONFIG(url).message);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
// Pick the shortest TTL between the view response and route object
|
|
96
|
+
const cacheTtl = shortestTtl(viewResponse.cache?.ttl, route.cache?.ttl);
|
|
97
|
+
if (cacheTtl) {
|
|
98
|
+
res.setHeader('cache-control', `public, max-age=${cacheTtl}`);
|
|
99
|
+
}
|
|
100
|
+
res.status(200);
|
|
101
|
+
res.type('application/javascript');
|
|
102
|
+
res.status(viewResponse.status || 200);
|
|
103
|
+
res.send(viewResponse.body);
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function createNotFoundMiddleware(errorRoutes, context, viewHandler) {
|
|
107
|
+
const notFoundRoute = errorRoutes.find((route) => route.status === 404);
|
|
108
|
+
if (notFoundRoute) {
|
|
109
|
+
return createViewMiddleware(notFoundRoute, errorRoutes, context, viewHandler);
|
|
110
|
+
}
|
|
111
|
+
return (req, res) => {
|
|
112
|
+
res.status(404).send(descriptions.UNRESOLVABLE.VIEW(req.originalUrl).message);
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export function viewMiddleware(app, context) {
|
|
116
|
+
const { appConfig, viewRegistry, moduleRegistry, routeHandlers } = context;
|
|
117
|
+
const { routes, errorRoutes } = appConfig;
|
|
118
|
+
const viewHandler = new LwrViewHandler({ viewRegistry, moduleRegistry, routeHandlers }, appConfig);
|
|
119
|
+
// create and attach middleware for each route
|
|
120
|
+
for (const route of routes) {
|
|
121
|
+
const paths = [route.path];
|
|
122
|
+
const subRoutes = route.subRoutes && getClientRoutes(route.subRoutes);
|
|
123
|
+
if (subRoutes) {
|
|
124
|
+
const prefix = route.path === '/' ? '' : route.path;
|
|
125
|
+
subRoutes.routes.forEach((subRoute) => subRoute.uri !== route.path && paths.push(`${prefix}${subRoute.uri}`));
|
|
126
|
+
}
|
|
127
|
+
paths.forEach((routePath) => paths.push(...CANONICAL_VIEW_ROUTES.map((viewRoute) => viewRoute + routePath)));
|
|
128
|
+
app.get(paths, handleErrors(createViewMiddleware(route, errorRoutes, context, viewHandler)));
|
|
129
|
+
}
|
|
130
|
+
// create and attach middleware for bootstrap configurations
|
|
131
|
+
app.get(getClientBootstrapConfigurationRoutes(), handleErrors(createConfigMiddleware(routes, context, viewHandler)));
|
|
132
|
+
// create and attach a greedy middleware to handle unsupported paths
|
|
133
|
+
// NOTE: a greedy `all` is used over `use` due to the way middleware is mounted in the server abstraction
|
|
134
|
+
app.get('/' + app.getRegexWildcard(), handleErrors(createNotFoundMiddleware(errorRoutes, context, viewHandler)));
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=view-middleware.js.map
|
package/build/es/middleware.d.ts
CHANGED
|
@@ -1,15 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* middleware dependencies.
|
|
10
|
-
*
|
|
11
|
-
* @param {InternalAppServer} app - LWR application
|
|
12
|
-
* @param {ServerContext} context - LWR server context
|
|
13
|
-
*/
|
|
14
|
-
export declare function attachLwrMiddleware<T extends ServerTypes>(app: InternalAppServer<T>, context: ServerContext): void;
|
|
1
|
+
export { localeMiddleware } from './middleware/locale-middleware.js';
|
|
2
|
+
export { hmrMiddleware } from './middleware/hmr-middleware.js';
|
|
3
|
+
export { moduleMiddleware } from './middleware/module-middleware.js';
|
|
4
|
+
export { bundleMiddleware } from './middleware/bundle-middleware.js';
|
|
5
|
+
export { mappingMiddleware } from './middleware/mapping-middleware.js';
|
|
6
|
+
export { assetMiddleware } from './middleware/asset-middleware.js';
|
|
7
|
+
export { viewMiddleware } from './middleware/view-middleware.js';
|
|
8
|
+
export { resourceMiddleware } from './middleware/resource-middleware.js';
|
|
15
9
|
//# sourceMappingURL=middleware.d.ts.map
|
package/build/es/middleware.js
CHANGED
|
@@ -1,21 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
* @param {InternalAppServer} app - LWR application
|
|
14
|
-
* @param {ServerContext} context - LWR server context
|
|
15
|
-
*/
|
|
16
|
-
export function attachLwrMiddleware(app, context) {
|
|
17
|
-
localeMiddleware(app, context);
|
|
18
|
-
apiMiddleware(app, context);
|
|
19
|
-
uiMiddleware(app, context);
|
|
20
|
-
}
|
|
1
|
+
// The middleware are exposed as a submodule to mitigate installing unnecessary dependency and minimize Lambda
|
|
2
|
+
// handler bundle size. For example, importing `@lwrjs/core` will pull in ALL `@lwrjs/server` dependencies
|
|
3
|
+
// which includes both `koa` and `express`. Importing `@lwrjs/core/middleware` will only pull in the
|
|
4
|
+
// middleware dependencies.
|
|
5
|
+
export { localeMiddleware } from './middleware/locale-middleware.js';
|
|
6
|
+
export { hmrMiddleware } from './middleware/hmr-middleware.js';
|
|
7
|
+
export { moduleMiddleware } from './middleware/module-middleware.js';
|
|
8
|
+
export { bundleMiddleware } from './middleware/bundle-middleware.js';
|
|
9
|
+
export { mappingMiddleware } from './middleware/mapping-middleware.js';
|
|
10
|
+
export { assetMiddleware } from './middleware/asset-middleware.js';
|
|
11
|
+
export { viewMiddleware } from './middleware/view-middleware.js';
|
|
12
|
+
export { resourceMiddleware } from './middleware/resource-middleware.js';
|
|
21
13
|
//# sourceMappingURL=middleware.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import SiteGenerator from './static-generation.js';
|
|
2
2
|
import { skipDirCreation } from './utils/dir.js';
|
|
3
3
|
import NetworkDispatcher from './utils/network-dispatcher.js';
|
|
4
|
-
import {
|
|
4
|
+
import { getRuntimeEnvironment } from '@lwrjs/config';
|
|
5
5
|
import { logger, WARN, INFO } from '@lwrjs/shared-utils';
|
|
6
6
|
export async function warmupServer(config, internalRequestKey) {
|
|
7
7
|
// De-duplicate warming messages if log level is warn or info
|
|
@@ -9,17 +9,10 @@ export async function warmupServer(config, internalRequestKey) {
|
|
|
9
9
|
logger.setOptions({ dedupe: new Set([WARN]) });
|
|
10
10
|
}
|
|
11
11
|
logger.info('[Server Warmup] starting');
|
|
12
|
-
const { routes, staticSiteGenerator, port,
|
|
12
|
+
const { routes, staticSiteGenerator, port, basePath } = config;
|
|
13
13
|
staticSiteGenerator.outputDir = skipDirCreation;
|
|
14
14
|
const urlRewriteMap = new Map();
|
|
15
|
-
const runtimeEnvironment =
|
|
16
|
-
...explodeMode(serverMode),
|
|
17
|
-
apiVersion,
|
|
18
|
-
basePath,
|
|
19
|
-
lwrVersion,
|
|
20
|
-
debug: false,
|
|
21
|
-
serverMode,
|
|
22
|
-
};
|
|
15
|
+
const runtimeEnvironment = getRuntimeEnvironment(config);
|
|
23
16
|
// For each locale, generate all the modules
|
|
24
17
|
await new SiteGenerator().generateRoutes(runtimeEnvironment, staticSiteGenerator, routes, basePath, new NetworkDispatcher(port, internalRequestKey), staticSiteGenerator.outputDir, urlRewriteMap);
|
|
25
18
|
logger.info('[Server Warmup] complete');
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ImportMetadata, LwrDispatcher, StaticSiteGenerator, LwrRoute, NormalizedLwrGlobalConfig, RuntimeEnvironment } from '@lwrjs/types';
|
|
1
|
+
import type { ImportMetadata, LwrDispatcher, StaticSiteGenerator, LwrRoute, NormalizedLwrGlobalConfig, RuntimeEnvironment } from '@lwrjs/types';
|
|
2
2
|
import { ResourceContextOpts, SiteConfig, ViewImportMetadata } from './types.js';
|
|
3
3
|
export default class SiteGenerator {
|
|
4
4
|
/**
|
|
@@ -6,6 +6,7 @@ export default class SiteGenerator {
|
|
|
6
6
|
* - Generate all routes / modules
|
|
7
7
|
* - copy assets / resources
|
|
8
8
|
*
|
|
9
|
+
* @deprecated - use new build api
|
|
9
10
|
* @param config - LWR config for the site
|
|
10
11
|
* @param dispatcher - Facilitate server requests
|
|
11
12
|
*/
|
|
@@ -35,6 +36,9 @@ export default class SiteGenerator {
|
|
|
35
36
|
* @param dispatcher - Network dispatcher
|
|
36
37
|
*/
|
|
37
38
|
private handleJavascriptResource;
|
|
39
|
+
private addBundleToSiteMetadata;
|
|
40
|
+
private addResourceToSiteMetadata;
|
|
41
|
+
private addAssetToSiteMetadata;
|
|
38
42
|
/**
|
|
39
43
|
* Handle processing a returned module URI mapping resource and follow all returned references
|
|
40
44
|
* @param url - URL of the request mapping resource
|
|
@@ -87,6 +91,8 @@ export default class SiteGenerator {
|
|
|
87
91
|
*
|
|
88
92
|
*/
|
|
89
93
|
private copyAssets;
|
|
94
|
+
private addAssetsToMetadata;
|
|
95
|
+
private addAssetToMetadata;
|
|
90
96
|
/**
|
|
91
97
|
* Create a new site config for the current view
|
|
92
98
|
*/
|
|
@@ -96,6 +102,10 @@ export default class SiteGenerator {
|
|
|
96
102
|
* Add any additional import metadata collected during static site generation to the Client Bootstrap Config for this view.
|
|
97
103
|
*/
|
|
98
104
|
private addAdditionalImportMetadataToViewConfig;
|
|
105
|
+
/**
|
|
106
|
+
* Capture additional metadata collected during the processing of a route or additional module
|
|
107
|
+
*/
|
|
108
|
+
private captureAdditionalRouteMetadata;
|
|
99
109
|
}
|
|
100
110
|
export declare class ViewImportMetadataImpl implements ViewImportMetadata {
|
|
101
111
|
private existing;
|