Код Middle Зависимости и supply chain обновлено

Попадает ли версия в уязвимый диапазон

Условие

Напишите isVulnerable(version, ranges). Версия в формате MAJOR.MINOR.PATCH (только числа). ranges массив объектов { introduced, fixed } в стиле базы OSV: версия уязвима, если introduced <= version < fixed. Поле fixed может отсутствовать: тогда уязвимы все версии начиная с introduced. Версии сравниваются как числа по компонентам (1.10.0 больше 1.9.9). Верните true, если версия попадает хотя бы в один диапазон.

Примеры

isVulnerable("2.14.1", [{"introduced":"2.0.0","fixed":"2.15.0"}]) // true
isVulnerable("2.15.0", [{"introduced":"2.0.0","fixed":"2.15.0"}]) // false
isVulnerable("1.9.9", [{"introduced":"2.0.0","fixed":"2.15.0"}]) // false

Как подойти

Подсказки: 2
  1. Разбейте версии на числа и сравнивайте покомпонентно.
  2. Отсутствующий fixed означает открытый сверху диапазон.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.