Найти в Дзене
Николай Сталин

B. Новый роутинг. Чемпионат по программированию Яндекса: Фронтенд, Квалификация

Программист Алексей отрефакторил REST API сервис, нанеся проекту огромную пользу. К сожалению, в ходе рефакторинга была нарушена обратная совместимость. Приложение перестало работать (404 на любой запрос). Алексей ушёл в отпуск, и теперь вам нужно срочно перевести фронтенд на новые пути. Для каждой сущности изменилась структура:

/{projectName}-{subproject}/{entityId}_{entityName}?a=1&b=2

стало:

/{projectName}/{subproject}/{entityName}/{entityId}?a=1&b=2

Нужно написать модуль, который для любых projectName, subproject, entityId и entityName поменяет пути.

То есть из:

/sails-111/333_ball?a=1&b=2

Сделает:

/sails/111/ball/333?a=1&b=2

Важно: путь entityId не обязателен. Ссылка может иметь вид:

/{projectName}-{subproject}/{entityName}?a=1&b=2

Тогда результирующая:

/projectName/subproject/entityName?a=1&b=2

Решение должно быть оформлено в виде commonJS-модуля:

module.exports = function(input) {  

}