@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.
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,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 = decode_param(matched[i]);
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
- * Check if the target environment is supported by the application
31
- *
32
- * @param environmentConfig - environment property from app config
33
- * @param targetEnvironment - environment value from module uri
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=utils.js.map
42
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1,3 @@
1
+ import type { InternalAppServer, ServerContext, ServerTypes } from '@lwrjs/types';
2
+ export declare function viewMiddleware<T extends ServerTypes>(app: InternalAppServer<T>, context: ServerContext): void;
3
+ //# sourceMappingURL=view-middleware.d.ts.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
@@ -1,15 +1,9 @@
1
- import { InternalAppServer, ServerContext, ServerTypes } from '@lwrjs/types';
2
- /**
3
- * Mount all LWR middleware to the provided LWR application
4
- *
5
- * @privateRemarks
6
- * This is exposed as a submodule to mitigate installing unnecessary dependency and minimize Lambda
7
- * handler bundle size. For example, importing `@lwrjs/core` will pull in ALL `@lwrjs/server` dependencies
8
- * which includes both `koa` and `express`. Importing `@lwrjs/core/middleware` will only pull in the
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
@@ -1,21 +1,13 @@
1
- import localeMiddleware from './middlewares/locale-middleware.js';
2
- import uiMiddleware from './middlewares/ui-middleware.js';
3
- import apiMiddleware from './middlewares/api-middleware.js';
4
- /**
5
- * Mount all LWR middleware to the provided LWR application
6
- *
7
- * @privateRemarks
8
- * This is exposed as a submodule to mitigate installing unnecessary dependency and minimize Lambda
9
- * handler bundle size. For example, importing `@lwrjs/core` will pull in ALL `@lwrjs/server` dependencies
10
- * which includes both `koa` and `express`. Importing `@lwrjs/core/middleware` will only pull in the
11
- * middleware dependencies.
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 { explodeMode } from '@lwrjs/config';
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, apiVersion, basePath, lwrVersion, serverMode } = config;
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;