В проекте есть несколько классов со статическими методами, которые возвращают значения для ссылок. Мне нужно объединить эти ссылки в один объект. Решение, которое я написал, рабочее, но может быть есть более изящный способ?
const urlsObj = {};
const modules = {
auth: AuthURI,
profile: ProfileURI,
password: ProfilePasswordURI,
signup: SignupURI,
site: SiteURI,
support: SupportURI,
}
for (const moduleName in modules) {
urlsObj[moduleName] = {};
const uriClass = modules[moduleName];
const arr = Object.getOwnPropertyNames(uriClass);
arr.forEach(uriClassMethod => {
// Отбрасываю дефолтные свойства
if (['length', 'prototype', 'name'].includes(uriClassMethod)) return;
urlsObj[moduleName][uriClassMethod] = uriClass[uriClassMethod];
});
}
На выходе примерно такой объект:
{
auth: { login: '/login', logout: '/logout' },
profile: { profile: '/profile' },
password: {
passwordSet: '/password/set',
passwordReset: '/password/reset',
passwordResetNext: '/password/reset-next'
},
}