Skip to content

Commit 8fffb17

Browse files
committed
[INTERNAL] index.js: Implement lazy require
Exported modules are required on access
1 parent 957519c commit 8fffb17

File tree

1 file changed

+38
-11
lines changed

1 file changed

+38
-11
lines changed

index.js

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,48 @@
22
* @module @ui5/server
33
* @public
44
*/
5-
module.exports = {
6-
server: require("./lib/server"),
7-
sslUtil: require("./lib/sslUtil"),
8-
middlewareRepository: require("./lib/middleware/middlewareRepository"),
5+
const modules = {
6+
server: "./lib/server",
7+
sslUtil: "./lib/sslUtil",
8+
middlewareRepository: "./lib/middleware/middlewareRepository",
99

1010
// Legacy middleware export. Still private.
1111
middleware: {
12-
csp: require("./lib/middleware/csp"),
13-
discovery: mapLegacyMiddlewareArguments(require("./lib/middleware/discovery")),
14-
nonReadRequests: mapLegacyMiddlewareArguments(require("./lib/middleware/discovery")),
15-
serveIndex: mapLegacyMiddlewareArguments(require("./lib/middleware/serveIndex")),
16-
serveResources: mapLegacyMiddlewareArguments(require("./lib/middleware/serveResources")),
17-
serveThemes: mapLegacyMiddlewareArguments(require("./lib/middleware/serveThemes")),
18-
versionInfo: mapLegacyMiddlewareArguments(require("./lib/middleware/versionInfo")),
12+
csp: "./lib/middleware/csp",
13+
discovery: "./lib/middleware/discovery",
14+
nonReadRequests: "./lib/middleware/discovery",
15+
serveIndex: "./lib/middleware/serveIndex",
16+
serveResources: "./lib/middleware/serveResources",
17+
serveThemes: "./lib/middleware/serveThemes",
18+
versionInfo: "./lib/middleware/versionInfo",
1919
}
2020
};
2121

22+
const LEGACY_MIDDLEWARE = [
23+
"discovery", "nonReadRequests", "serveIndex",
24+
"serveResources", "serveThemes", "versionInfo"
25+
];
26+
function exportModules(exportRoot, modulePaths) {
27+
for (const moduleName in modulePaths) {
28+
if (Object.prototype.hasOwnProperty.call(modulePaths, moduleName)) {
29+
if (typeof modulePaths[moduleName] === "object") {
30+
exportRoot[moduleName] = {};
31+
exportModules(exportRoot[moduleName], modulePaths[moduleName]);
32+
} else {
33+
Object.defineProperty(exportRoot, moduleName, {
34+
get() {
35+
let m = require(modulePaths[moduleName]);
36+
if (LEGACY_MIDDLEWARE.includes(moduleName)) {
37+
m = mapLegacyMiddlewareArguments(m);
38+
}
39+
return m;
40+
}
41+
});
42+
}
43+
}
44+
}
45+
}
46+
2247
function mapLegacyMiddlewareArguments(module) {
2348
// Old arguments was a single object with optional properties
2449
// - resourceCollections
@@ -35,3 +60,5 @@ function mapLegacyMiddlewareArguments(module) {
3560
});
3661
};
3762
}
63+
64+
exportModules(module.exports, modules);

0 commit comments

Comments
 (0)