32 lines
1.0 KiB
JavaScript
32 lines
1.0 KiB
JavaScript
/*
|
||
! /servers/dashboard/routers/index.js – Central Gateway Routing Aggregator
|
||
? This module dynamically collects and registeres all modular ".router.js" files within the "routers" directory
|
||
*/
|
||
|
||
// % import nodejs packages
|
||
const router = require('express').Router();
|
||
const path = require('path');
|
||
const fs = require('fs');
|
||
|
||
// % import external dependencies
|
||
const rootDir = path.resolve(__dirname, '..', '..', '..');
|
||
const { dirs } = require(path.resolve(rootDir, 'configuration', 'mapping.js'));
|
||
|
||
// % read router files recursively
|
||
const routerRoot = path.resolve(dirs.dashboardDir, 'routers');
|
||
const routerFiles = fs.readdirSync(routerRoot)
|
||
.filter(file => /\.router\.js$/.test(file))
|
||
.sort((a, b) => {
|
||
if (a === 'root.router.js') return 1;
|
||
if (b === 'root.router.js') return -1;
|
||
return a.localeCompare(b);
|
||
});
|
||
|
||
// $ configure used routers
|
||
routerFiles.forEach(file => {
|
||
const routerPath = path.resolve(routerRoot, file);
|
||
router.use(require(routerPath));
|
||
});
|
||
|
||
// § export router module
|
||
module.exports = router; |