@lwrjs/core 0.9.0-alpha.2 → 0.9.0-alpha.21
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 +84 -0
- package/build/cjs/context/server.cjs +75 -0
- package/build/cjs/index.cjs +69 -153
- package/build/cjs/middleware/asset-middleware.cjs +56 -0
- package/build/cjs/middleware/bundle-middleware.cjs +113 -0
- package/build/cjs/{middlewares → middleware}/hmr-middleware.cjs +4 -4
- 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/services.cjs → middleware/utils/error-handling.cjs} +28 -15
- package/build/cjs/middleware/utils/identity.cjs +93 -0
- package/build/cjs/{context/hooks.cjs → middleware/utils/metadata.cjs} +17 -26
- 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 +43 -0
- package/build/cjs/tools/server-warmup.cjs +2 -9
- package/build/cjs/tools/static-generation.cjs +127 -49
- package/build/es/context/provider.d.ts +3 -0
- package/build/es/context/provider.js +39 -0
- package/build/es/context/server.d.ts +3 -0
- package/build/es/context/server.js +49 -0
- package/build/es/index.d.ts +4 -2
- package/build/es/index.js +89 -150
- package/build/es/middleware/asset-middleware.d.ts +3 -0
- package/build/es/middleware/asset-middleware.js +26 -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 +2 -2
- 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 +64 -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 +9 -0
- package/build/es/middleware.js +13 -0
- package/build/es/tools/server-warmup.js +3 -10
- package/build/es/tools/static-generation.d.ts +8 -1
- package/build/es/tools/static-generation.js +155 -62
- package/build/es/tools/types.d.ts +3 -2
- package/package.json +36 -32
- package/build/cjs/context/global-data.cjs +0 -54
- 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/es/context/global-data.d.ts +0 -3
- package/build/es/context/global-data.js +0 -29
- package/build/es/context/hooks.d.ts +0 -9
- package/build/es/context/hooks.js +0 -36
- package/build/es/context/services.d.ts +0 -8
- package/build/es/context/services.js +0 -17
- 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
|
@@ -0,0 +1,43 @@
|
|
|
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.ts
|
|
25
|
+
__markAsModule(exports);
|
|
26
|
+
__export(exports, {
|
|
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
|
|
35
|
+
});
|
|
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,
|
|
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
|
}
|
|
@@ -37,7 +37,7 @@ var import_config = __toModule(require("@lwrjs/config"));
|
|
|
37
37
|
var SiteGenerator = class {
|
|
38
38
|
async buildStaticApplication(config, dispatcher) {
|
|
39
39
|
const startTime = import_perf_hooks.performance.now();
|
|
40
|
-
import_shared_utils.logger.info("[Static Generation
|
|
40
|
+
import_shared_utils.logger.info("[SSG] Static Site Generation");
|
|
41
41
|
if (!import_shared_utils.logger.currentLevel || import_shared_utils.logger.currentLevel == import_shared_utils.WARN || import_shared_utils.logger.currentLevel == import_shared_utils.INFO) {
|
|
42
42
|
import_shared_utils.logger.setOptions({dedupe: new Set([import_shared_utils.WARN])});
|
|
43
43
|
}
|
|
@@ -46,46 +46,50 @@ var SiteGenerator = class {
|
|
|
46
46
|
staticSiteGenerator.outputDir = "__generated_site__";
|
|
47
47
|
}
|
|
48
48
|
const outputDir = (0, import_path.join)(rootDir, staticSiteGenerator.outputDir);
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
if (!staticSiteGenerator.skipCleanOutputDir) {
|
|
50
|
+
import_shared_utils.logger.info(`[SSG] Clearing output directory: ${outputDir}`);
|
|
51
|
+
import_fs_extra.default.rmSync(outputDir, {recursive: true, force: true});
|
|
52
|
+
} else {
|
|
53
|
+
import_shared_utils.logger.info(`[SSG] Reusing existing output directory: ${outputDir}`);
|
|
54
|
+
}
|
|
51
55
|
const urlRewriteMap = new Map();
|
|
52
|
-
const {
|
|
53
|
-
const runtimeEnvironment =
|
|
54
|
-
...(0, import_config.explodeMode)(serverMode),
|
|
55
|
-
apiVersion,
|
|
56
|
-
basePath,
|
|
57
|
-
lwrVersion,
|
|
58
|
-
debug: false,
|
|
59
|
-
serverMode
|
|
60
|
-
};
|
|
56
|
+
const {basePath} = config;
|
|
57
|
+
const runtimeEnvironment = (0, import_config.getRuntimeEnvironment)(config);
|
|
61
58
|
await this.generateRoutes(runtimeEnvironment, staticSiteGenerator, routes, basePath, dispatcher, outputDir, urlRewriteMap);
|
|
62
59
|
this.writeNetlifyRedirectConfig(outputDir, urlRewriteMap);
|
|
63
60
|
this.copyAssets(assets, outputDir, basePath);
|
|
64
61
|
const endTime = import_perf_hooks.performance.now();
|
|
65
62
|
const timeDiff = (endTime - startTime) / 1e3;
|
|
66
|
-
import_shared_utils.logger.info(`[Static Generation
|
|
63
|
+
import_shared_utils.logger.info(`[SSG] Static Site Generation complete in ${Math.round(timeDiff)} seconds`);
|
|
67
64
|
}
|
|
68
65
|
async generateRoutes(runtimeEnvironment, staticSiteGenerator, routes, basePath, dispatcher, outputDir, urlRewriteMap = new Map()) {
|
|
69
66
|
if (!staticSiteGenerator.locales) {
|
|
70
67
|
staticSiteGenerator.locales = ["en-US"];
|
|
71
68
|
}
|
|
72
69
|
const generateUrl = this.createGenerateURLFunction(dispatcher);
|
|
70
|
+
const {skipBaseDocumentGeneration = false} = staticSiteGenerator;
|
|
73
71
|
for (const locale of staticSiteGenerator.locales) {
|
|
74
72
|
for (const route of routes) {
|
|
75
|
-
const siteConfig = this.createSiteConfig(outputDir, locale, urlRewriteMap, runtimeEnvironment);
|
|
73
|
+
const siteConfig = this.createSiteConfig(outputDir, locale, urlRewriteMap, skipBaseDocumentGeneration, runtimeEnvironment);
|
|
76
74
|
await generateUrl(basePath + route.path, siteConfig);
|
|
77
75
|
}
|
|
78
76
|
if (staticSiteGenerator._additionalRoutePaths) {
|
|
79
77
|
for (const uri of staticSiteGenerator._additionalRoutePaths) {
|
|
80
|
-
const siteConfig = this.createSiteConfig(outputDir, locale, urlRewriteMap, runtimeEnvironment);
|
|
78
|
+
const siteConfig = this.createSiteConfig(outputDir, locale, urlRewriteMap, skipBaseDocumentGeneration, runtimeEnvironment);
|
|
81
79
|
await generateUrl(uri, siteConfig);
|
|
82
80
|
}
|
|
83
81
|
}
|
|
84
82
|
const {_additionalModules} = staticSiteGenerator;
|
|
85
83
|
if (_additionalModules) {
|
|
86
84
|
for (const specifier of _additionalModules) {
|
|
87
|
-
|
|
85
|
+
import_shared_utils.logger.debug(`[SSG] Additional Module: ${locale} ${specifier}`);
|
|
86
|
+
const startTime = import_perf_hooks.performance.now();
|
|
87
|
+
const siteConfig = this.createSiteConfig(outputDir, locale, urlRewriteMap, skipBaseDocumentGeneration, runtimeEnvironment);
|
|
88
88
|
await this.dispatchJSResourceRecursive(specifier, dispatcher, siteConfig, true);
|
|
89
|
+
await this.captureAdditionalRouteMetadata(siteConfig);
|
|
90
|
+
const endTime = import_perf_hooks.performance.now();
|
|
91
|
+
const timeDiff = endTime - startTime;
|
|
92
|
+
import_shared_utils.logger.info(`[SSG] Additional Module ${locale} ${specifier} in ${Math.round(timeDiff)} ms`);
|
|
89
93
|
}
|
|
90
94
|
}
|
|
91
95
|
}
|
|
@@ -93,10 +97,13 @@ var SiteGenerator = class {
|
|
|
93
97
|
createGenerateURLFunction(dispatcher) {
|
|
94
98
|
const generateRoute = async (uri, siteConfig) => {
|
|
95
99
|
const locale = siteConfig.locale;
|
|
96
|
-
import_shared_utils.logger.
|
|
100
|
+
import_shared_utils.logger.debug(`[SSG] Start Generate: ${locale} ${uri}`);
|
|
101
|
+
const startTime = import_perf_hooks.performance.now();
|
|
97
102
|
await this.dispatchResourceRecursive(uri, dispatcher, {resourceType: "route"}, siteConfig);
|
|
98
|
-
this.
|
|
99
|
-
|
|
103
|
+
await this.captureAdditionalRouteMetadata(siteConfig);
|
|
104
|
+
const endTime = import_perf_hooks.performance.now();
|
|
105
|
+
const timeDiff = endTime - startTime;
|
|
106
|
+
import_shared_utils.logger.info(`[SSG] ${locale} ${uri} in ${Math.round(timeDiff)} ms`);
|
|
100
107
|
};
|
|
101
108
|
return generateRoute.bind(this);
|
|
102
109
|
}
|
|
@@ -104,8 +111,12 @@ var SiteGenerator = class {
|
|
|
104
111
|
const {visitedUrls} = siteConfig;
|
|
105
112
|
if (!visitedUrls.has(url)) {
|
|
106
113
|
visitedUrls.add(url);
|
|
114
|
+
if ((0, import_shared_utils.isExternalUrl)(url)) {
|
|
115
|
+
import_shared_utils.logger.warn("[SSG] Skipped generation of external url: " + url);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
107
118
|
if (url.indexOf("/:") !== -1 || url.indexOf("*") !== -1) {
|
|
108
|
-
import_shared_utils.logger.warn("Skipped generation of url with variable path segment: " + url);
|
|
119
|
+
import_shared_utils.logger.warn("[SSG] Skipped generation of url with variable path segment: " + url);
|
|
109
120
|
return;
|
|
110
121
|
}
|
|
111
122
|
let context;
|
|
@@ -154,6 +165,9 @@ var SiteGenerator = class {
|
|
|
154
165
|
const jsUri = importModule.specifier.startsWith("/") ? importModule.specifier : (0, import_shared_utils.getSpecifier)(importModule);
|
|
155
166
|
dispatchRequests.push(this.dispatchJSResourceRecursive(jsUri, dispatcher, siteConfig));
|
|
156
167
|
}
|
|
168
|
+
if (moduleDefinition.bundleRecord) {
|
|
169
|
+
this.addBundleToSiteMetadata(moduleDefinition, url, siteConfig);
|
|
170
|
+
}
|
|
157
171
|
}
|
|
158
172
|
const uris = context.fs?.metadata?.resolvedUris || [];
|
|
159
173
|
for (const jsUri of uris) {
|
|
@@ -161,6 +175,50 @@ var SiteGenerator = class {
|
|
|
161
175
|
}
|
|
162
176
|
await Promise.all(dispatchRequests);
|
|
163
177
|
}
|
|
178
|
+
addBundleToSiteMetadata(bundleDefinition, url, siteConfig) {
|
|
179
|
+
if (siteConfig.siteMetadata) {
|
|
180
|
+
const specifier = bundleDefinition.specifier;
|
|
181
|
+
const imports = bundleDefinition.bundleRecord.imports?.map((moduleRef) => moduleRef.specifier) || [];
|
|
182
|
+
const bundleMetadata = {
|
|
183
|
+
version: bundleDefinition.version,
|
|
184
|
+
path: decodeURIComponent(url),
|
|
185
|
+
includedModules: bundleDefinition.bundleRecord.includedModules || [],
|
|
186
|
+
imports
|
|
187
|
+
};
|
|
188
|
+
const siteBundles = siteConfig.siteMetadata.getSiteBundles().bundles;
|
|
189
|
+
siteBundles[specifier] = bundleMetadata;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
addResourceToSiteMetadata(resourceDefinition, url, siteConfig) {
|
|
193
|
+
if (siteConfig.siteMetadata) {
|
|
194
|
+
if (!resourceDefinition.specifier) {
|
|
195
|
+
import_shared_utils.logger.warn("[SSG] Could not save resource metadata. There was no specifier.", resourceDefinition);
|
|
196
|
+
} else {
|
|
197
|
+
const specifier = resourceDefinition.specifier;
|
|
198
|
+
const resourceMetadata = {
|
|
199
|
+
path: decodeURIComponent(url),
|
|
200
|
+
mimeType: resourceDefinition.type
|
|
201
|
+
};
|
|
202
|
+
const siteResources = siteConfig.siteMetadata.getSiteResources();
|
|
203
|
+
siteResources.resources[specifier] = resourceMetadata;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
addAssetToSiteMetadata(assetDefinition, url, siteConfig) {
|
|
208
|
+
if (siteConfig.siteMetadata) {
|
|
209
|
+
if (!assetDefinition.uri) {
|
|
210
|
+
import_shared_utils.logger.warn("[SSG] Could not save asset metadata. There was no uri.", assetDefinition);
|
|
211
|
+
} else {
|
|
212
|
+
const specifier = assetDefinition.uri;
|
|
213
|
+
const resourceMetadata = {
|
|
214
|
+
path: decodeURIComponent(url),
|
|
215
|
+
mimeType: String(assetDefinition.mime)
|
|
216
|
+
};
|
|
217
|
+
const siteAssets = siteConfig.siteMetadata.getSiteAssets();
|
|
218
|
+
siteAssets.assets[specifier] = resourceMetadata;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
164
222
|
async handleMappingResource(url, context, siteConfig, dispatcher) {
|
|
165
223
|
const {importMetadata: importMetatdata} = siteConfig;
|
|
166
224
|
const statusCode = context.response?.status;
|
|
@@ -179,29 +237,31 @@ var SiteGenerator = class {
|
|
|
179
237
|
await Promise.all(dispatchRequests);
|
|
180
238
|
} else {
|
|
181
239
|
const body = context.fs?.body;
|
|
182
|
-
import_shared_utils.logger.warn(`Failed to fetch ${url}: (${statusCode}) ${body}`);
|
|
240
|
+
import_shared_utils.logger.warn(`[SSG] Failed to fetch ${url}: (${statusCode}) ${body}`);
|
|
183
241
|
}
|
|
184
242
|
}
|
|
185
243
|
async handleHtmlResource(url, context, siteConfig, dispatcher) {
|
|
186
|
-
const {outputDir} = siteConfig;
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
siteConfig.
|
|
200
|
-
|
|
244
|
+
const {outputDir, skipBaseDocumentGeneration} = siteConfig;
|
|
245
|
+
if (!skipBaseDocumentGeneration) {
|
|
246
|
+
let fileName = "index.html";
|
|
247
|
+
let directoryPath = url;
|
|
248
|
+
if (url.endsWith(".html") || url.endsWith(".xml")) {
|
|
249
|
+
const lastPathIndex = url.lastIndexOf("/") + 1;
|
|
250
|
+
fileName = url.substring(lastPathIndex, url.length);
|
|
251
|
+
directoryPath = url.substring(0, lastPathIndex);
|
|
252
|
+
}
|
|
253
|
+
const dir = (0, import_dir.createResourceDir)(directoryPath, outputDir);
|
|
254
|
+
const localeDir = (0, import_dir.createResourceDir)(directoryPath, (0, import_path.join)(outputDir, siteConfig.locale));
|
|
255
|
+
const filePath = (0, import_path.join)(dir, fileName);
|
|
256
|
+
const fileLocalePath = (0, import_path.join)(localeDir, fileName);
|
|
257
|
+
if (siteConfig.locale.toLowerCase().startsWith("en")) {
|
|
258
|
+
siteConfig.viewPaths.add(filePath);
|
|
259
|
+
await (0, import_stream.writeResponse)(context, filePath);
|
|
260
|
+
}
|
|
261
|
+
(0, import_dir.createDir)(localeDir);
|
|
262
|
+
siteConfig.viewPaths.add(fileLocalePath);
|
|
263
|
+
await (0, import_stream.writeResponse)(context, fileLocalePath);
|
|
201
264
|
}
|
|
202
|
-
(0, import_dir.createDir)(localeDir);
|
|
203
|
-
siteConfig.viewPaths.add(fileLocalePath);
|
|
204
|
-
await (0, import_stream.writeResponse)(context, fileLocalePath);
|
|
205
265
|
const viewDefinition = context.fs?.metadata?.viewDefinition;
|
|
206
266
|
if (viewDefinition) {
|
|
207
267
|
await this.handleViewDefinition(viewDefinition, siteConfig, dispatcher);
|
|
@@ -243,7 +303,7 @@ var SiteGenerator = class {
|
|
|
243
303
|
siteConfig.viewConfigPath = this.getResourcePathFromUrl(siteConfig, resourceUri);
|
|
244
304
|
}
|
|
245
305
|
} else {
|
|
246
|
-
import_shared_utils.logger.warn("Skipped inline bootstrap resource: %j", resource);
|
|
306
|
+
import_shared_utils.logger.warn("[SSG] Skipped inline bootstrap resource: %j", resource);
|
|
247
307
|
}
|
|
248
308
|
}
|
|
249
309
|
}
|
|
@@ -253,7 +313,7 @@ var SiteGenerator = class {
|
|
|
253
313
|
if (resourceUri.startsWith("/")) {
|
|
254
314
|
dispatchRequests.push(this.dispatchResourceRecursive(resourceUri, dispatcher, {resourceType: "resource"}, siteConfig));
|
|
255
315
|
} else {
|
|
256
|
-
import_shared_utils.logger.warn("Skipped resource: %j", resource);
|
|
316
|
+
import_shared_utils.logger.warn("[SSG] Skipped resource: %j", resource);
|
|
257
317
|
}
|
|
258
318
|
}
|
|
259
319
|
await Promise.all(dispatchRequests);
|
|
@@ -269,7 +329,7 @@ var SiteGenerator = class {
|
|
|
269
329
|
const mappingURL = siteConfig.endpoints?.uris?.mapping + encodeURIComponent(jsUri);
|
|
270
330
|
await this.dispatchResourceRecursive(mappingURL, dispatcher, {resourceType: "mapping"}, siteConfig);
|
|
271
331
|
} else {
|
|
272
|
-
import_shared_utils.logger.warn('Unable to fetch mapping for bare specifier or variable dynamic import: "' + jsUri + '"');
|
|
332
|
+
import_shared_utils.logger.warn('[SSG] Unable to fetch mapping for bare specifier or variable dynamic import: "' + jsUri + '"');
|
|
273
333
|
}
|
|
274
334
|
} else if (isAdditionalModulesRequest) {
|
|
275
335
|
const uri = `${siteConfig.endpoints?.uris.legacyDefault}${encodeURIComponent(jsUri)}`;
|
|
@@ -281,12 +341,17 @@ var SiteGenerator = class {
|
|
|
281
341
|
const metadata = context.fs?.metadata;
|
|
282
342
|
const fullPath = this.getResourcePathFromUrl(siteConfig, url);
|
|
283
343
|
await (0, import_stream.writeResponse)(context, fullPath);
|
|
344
|
+
if (metadata?.resource) {
|
|
345
|
+
this.addResourceToSiteMetadata(metadata?.resource, url, siteConfig);
|
|
346
|
+
} else if (metadata?.asset) {
|
|
347
|
+
this.addAssetToSiteMetadata(metadata?.asset, url, siteConfig);
|
|
348
|
+
}
|
|
284
349
|
const assetReferences = metadata?.asset?.metadata?.assetReferences || [];
|
|
285
350
|
const dispatchRequests = [];
|
|
286
351
|
for (const ref of assetReferences) {
|
|
287
352
|
const refUrl = ref.override?.uri || ref.url;
|
|
288
353
|
dispatchRequests.push(this.dispatchResourceRecursive(refUrl, dispatcher, {resourceType: "asset", asset: metadata?.asset}, siteConfig).catch((err) => {
|
|
289
|
-
import_shared_utils.logger.warn(`Failed to fetch asset reference => ${refUrl} from ${url}`, err);
|
|
354
|
+
import_shared_utils.logger.warn(`[SSG] Failed to fetch asset reference => ${refUrl} from ${url}`, err);
|
|
290
355
|
}));
|
|
291
356
|
}
|
|
292
357
|
return Promise.all(dispatchRequests);
|
|
@@ -323,14 +388,14 @@ var SiteGenerator = class {
|
|
|
323
388
|
if (assetSrcDir && import_fs_extra.default.existsSync(assetSrcDir)) {
|
|
324
389
|
import_fs_extra.default.copySync(assetSrcDir, assetOutputDir);
|
|
325
390
|
} else {
|
|
326
|
-
import_shared_utils.logger.warn("Could not find assets to copy at path: " + assetSrcDir);
|
|
391
|
+
import_shared_utils.logger.warn("[SSG] Could not find assets to copy at path: " + assetSrcDir);
|
|
327
392
|
}
|
|
328
393
|
} catch (e) {
|
|
329
|
-
import_shared_utils.logger.error("Error occurred processing asset config: " + JSON.stringify(asset), e);
|
|
394
|
+
import_shared_utils.logger.error("[SSG] Error occurred processing asset config: " + JSON.stringify(asset), e);
|
|
330
395
|
}
|
|
331
396
|
}
|
|
332
397
|
}
|
|
333
|
-
createSiteConfig(outputDir, locale, urlRewriteMap, runtimeEnvironment) {
|
|
398
|
+
createSiteConfig(outputDir, locale, urlRewriteMap, skipBaseDocumentGeneration, runtimeEnvironment) {
|
|
334
399
|
const featureFlags = this.filterFeatureFlags();
|
|
335
400
|
const endpoints = {
|
|
336
401
|
uris: {
|
|
@@ -345,12 +410,21 @@ var SiteGenerator = class {
|
|
|
345
410
|
locale,
|
|
346
411
|
urlRewriteMap,
|
|
347
412
|
endpoints,
|
|
348
|
-
|
|
413
|
+
skipBaseDocumentGeneration,
|
|
414
|
+
...featureFlags,
|
|
415
|
+
siteMetadata: new import_shared_utils.SiteMetadataImpl({rootDir: outputDir})
|
|
349
416
|
};
|
|
350
417
|
}
|
|
351
418
|
filterFeatureFlags() {
|
|
352
|
-
|
|
353
|
-
|
|
419
|
+
const ffs = (0, import_shared_utils.getFeatureFlags)();
|
|
420
|
+
if (ffs && Object.keys(ffs).length) {
|
|
421
|
+
const accumlator = {};
|
|
422
|
+
for (const [key, value] of Object.entries(ffs)) {
|
|
423
|
+
if (value) {
|
|
424
|
+
accumlator[key] = true;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
return {featureFlags: accumlator};
|
|
354
428
|
} else {
|
|
355
429
|
return void 0;
|
|
356
430
|
}
|
|
@@ -387,6 +461,10 @@ ${mergeIndex}
|
|
|
387
461
|
});
|
|
388
462
|
}
|
|
389
463
|
}
|
|
464
|
+
async captureAdditionalRouteMetadata(siteConfig) {
|
|
465
|
+
this.addAdditionalImportMetadataToViewConfig(siteConfig);
|
|
466
|
+
await siteConfig.siteMetadata?.persistSiteMetadata();
|
|
467
|
+
}
|
|
390
468
|
};
|
|
391
469
|
var static_generation_default = SiteGenerator;
|
|
392
470
|
var ViewImportMetadataImpl = class {
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { deepFreeze } from '@lwrjs/shared-utils';
|
|
2
|
+
export function createProviderContext(serverContext) {
|
|
3
|
+
// This is a subset of config to user-land code
|
|
4
|
+
const { cacheDir, lwc: { modules = [] }, routes, errorRoutes, rootDir, contentDir, layoutsDir, locker, amdLoader, esmLoader, environment, basePath, bundleConfig, } = serverContext.appConfig;
|
|
5
|
+
const { onModuleDefinitionChange, onModuleSourceChange } = serverContext.appObserver;
|
|
6
|
+
const { notifyModuleDefinitionChanged, notifyModuleSourceChanged, notifyViewSourceChanged, notifyAssetSourceChanged, } = serverContext.appEmitter;
|
|
7
|
+
return {
|
|
8
|
+
appObserver: deepFreeze({ onModuleDefinitionChange, onModuleSourceChange }),
|
|
9
|
+
appEmitter: {
|
|
10
|
+
notifyModuleDefinitionChanged: (payload) => notifyModuleDefinitionChanged.call(serverContext.appEmitter, payload),
|
|
11
|
+
notifyModuleSourceChanged: (payload) => notifyModuleSourceChanged.call(serverContext.appEmitter, payload),
|
|
12
|
+
notifyViewSourceChanged: (payload) => notifyViewSourceChanged.call(serverContext.appEmitter, payload),
|
|
13
|
+
notifyAssetSourceChanged: (payload) => notifyAssetSourceChanged.call(serverContext.appEmitter, payload),
|
|
14
|
+
},
|
|
15
|
+
moduleRegistry: serverContext.moduleRegistry.getPublicApi(),
|
|
16
|
+
moduleBundler: serverContext.moduleBundler.getPublicApi(),
|
|
17
|
+
resourceRegistry: serverContext.resourceRegistry.getPublicApi(),
|
|
18
|
+
viewRegistry: serverContext.viewRegistry.getPublicApi(),
|
|
19
|
+
assetRegistry: serverContext.assetRegistry.getPublicApi(),
|
|
20
|
+
config: deepFreeze({
|
|
21
|
+
cacheDir,
|
|
22
|
+
modules,
|
|
23
|
+
routes,
|
|
24
|
+
errorRoutes,
|
|
25
|
+
rootDir,
|
|
26
|
+
basePath,
|
|
27
|
+
contentDir,
|
|
28
|
+
layoutsDir,
|
|
29
|
+
locker,
|
|
30
|
+
amdLoader,
|
|
31
|
+
esmLoader,
|
|
32
|
+
environment,
|
|
33
|
+
bundleConfig,
|
|
34
|
+
}),
|
|
35
|
+
runtimeEnvironment: deepFreeze(serverContext.runtimeEnvironment),
|
|
36
|
+
watcherFactory: serverContext.watcherFactory,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { GlobalData, NormalizedLwrGlobalConfig, RuntimeEnvironment, ServerContext } from '@lwrjs/types';
|
|
2
|
+
export declare function createServerContext(appConfig: NormalizedLwrGlobalConfig, runtimeEnvironment: RuntimeEnvironment, globalData: GlobalData): ServerContext;
|
|
3
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { LwrAssetRegistry } from '@lwrjs/asset-registry';
|
|
2
|
+
import { LwrModuleBundler } from '@lwrjs/module-bundler';
|
|
3
|
+
import { LwrModuleRegistry } from '@lwrjs/module-registry';
|
|
4
|
+
import { LwrResourceRegistry } from '@lwrjs/resource-registry';
|
|
5
|
+
import { LwrApplicationObserver } from '@lwrjs/shared-utils';
|
|
6
|
+
import { LwrViewRegistry } from '@lwrjs/view-registry';
|
|
7
|
+
// dependency chokidar in this package.json is to statisfy the optional dependency in shared-utils for fs-watch.
|
|
8
|
+
import { WatcherFactoryImpl } from '@lwrjs/shared-utils/fs-watch';
|
|
9
|
+
export function createServerContext(appConfig, runtimeEnvironment, globalData) {
|
|
10
|
+
const appObserver = new LwrApplicationObserver();
|
|
11
|
+
const appEmitter = appObserver.createLwrEmitter();
|
|
12
|
+
const assetRegistry = new LwrAssetRegistry({
|
|
13
|
+
appObserver,
|
|
14
|
+
appEmitter,
|
|
15
|
+
runtimeEnvironment,
|
|
16
|
+
}, appConfig);
|
|
17
|
+
const moduleRegistry = new LwrModuleRegistry({
|
|
18
|
+
appObserver,
|
|
19
|
+
appEmitter,
|
|
20
|
+
runtimeEnvironment,
|
|
21
|
+
}, appConfig);
|
|
22
|
+
const moduleBundler = new LwrModuleBundler({ moduleRegistry, appObserver }, appConfig);
|
|
23
|
+
const resourceRegistry = new LwrResourceRegistry();
|
|
24
|
+
const viewRegistry = new LwrViewRegistry({
|
|
25
|
+
moduleRegistry,
|
|
26
|
+
moduleBundler,
|
|
27
|
+
resourceRegistry,
|
|
28
|
+
assetRegistry,
|
|
29
|
+
appObserver,
|
|
30
|
+
appEmitter,
|
|
31
|
+
globalData,
|
|
32
|
+
runtimeEnvironment,
|
|
33
|
+
}, appConfig);
|
|
34
|
+
const watcherFactory = new WatcherFactoryImpl();
|
|
35
|
+
return {
|
|
36
|
+
appObserver,
|
|
37
|
+
appEmitter,
|
|
38
|
+
moduleRegistry,
|
|
39
|
+
moduleBundler,
|
|
40
|
+
resourceRegistry,
|
|
41
|
+
assetRegistry,
|
|
42
|
+
viewRegistry,
|
|
43
|
+
watcherFactory,
|
|
44
|
+
appConfig,
|
|
45
|
+
runtimeEnvironment,
|
|
46
|
+
routeHandlers: {},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=server.js.map
|
package/build/es/index.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { LwrGlobalConfig, NormalizedLwrGlobalConfig, ServerTypeImpl, PublicAppServer, ServerTypes } from '@lwrjs/types';
|
|
1
|
+
import type { LwrGlobalConfig, NormalizedLwrGlobalConfig, ServerTypeImpl, PublicAppServer, ServerTypes } from '@lwrjs/types';
|
|
2
2
|
export declare class LwrApp {
|
|
3
3
|
private app;
|
|
4
4
|
private server;
|
|
5
5
|
private initialized;
|
|
6
6
|
private config;
|
|
7
|
+
private runtimeEnvironment;
|
|
8
|
+
private globalData;
|
|
7
9
|
constructor(config?: LwrGlobalConfig);
|
|
8
10
|
setConfig(config: LwrGlobalConfig): void;
|
|
9
11
|
getConfig(): NormalizedLwrGlobalConfig;
|
|
@@ -20,5 +22,5 @@ export declare class LwrApp {
|
|
|
20
22
|
getServer(): PublicAppServer<ServerTypes>;
|
|
21
23
|
}
|
|
22
24
|
export declare function createServer(config?: LwrGlobalConfig): LwrApp;
|
|
23
|
-
export declare function generateStaticSite(config?: LwrGlobalConfig): Promise<
|
|
25
|
+
export declare function generateStaticSite(config?: LwrGlobalConfig): Promise<NormalizedLwrGlobalConfig>;
|
|
24
26
|
//# sourceMappingURL=index.d.ts.map
|