db-vendo-client/p/db/index.js

52 lines
1.5 KiB
JavaScript
Raw Normal View History

import {createRequire} from 'module';
const require = createRequire(import.meta.url);
const dynamicProfileData = require('./dynamicProfileData.json');
const dbnavBase = require('../dbnav/base.json');
const dbregioguideBase = require('../dbregioguide/base.json');
const dbwebBase = require('../dbweb/base.json');
2024-12-21 15:26:49 +00:00
import {products} from '../../lib/products.js';
2017-11-12 23:51:39 +01:00
2022-05-07 16:17:37 +02:00
const profile = {
locale: 'de-DE',
2017-11-12 23:51:39 +01:00
timezone: 'Europe/Berlin',
2024-12-21 15:26:49 +00:00
products,
};
2017-11-12 23:51:39 +01:00
// add profile methods
for (const {profileName, profileMethods} of Object.values(dynamicProfileData)) {
for (const {methodName, moduleName} of profileMethods) {
try {
// TODO use `import()` with top-level await once updated to es2022
profile[methodName] = require(`../${profileName}/${moduleName}`)[methodName];
} catch { /* use implementation from default profile if module doesn't exist */ }
}
}
const bases = {
dbnav: dbnavBase,
dbregioguide: dbregioguideBase,
dbweb: dbwebBase,
};
// add endpoint bases
for (const {profileName, baseKeys} of Object.values(dynamicProfileData)) {
if (profileName !== 'db') { // only add endpoint(s) from specified profile
for (const baseKey of baseKeys) {
profile[baseKey] = bases[profileName][baseKey];
}
continue;
}
// add endpoints from all profiles with the profile names as key suffixes and dynamically decide which to use later
for (const [profileName, profileBases] of Object.entries(bases)) {
for (const baseKey of baseKeys) {
profile[`${baseKey}_${profileName}`] = profileBases[baseKey];
}
}
}
2022-05-07 16:17:37 +02:00
export {
profile,
};