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