is-promiseПакет, который разрушил всю экосистему JavaScript
Библиотека is-promise
, несмотря на то, что это всего лишь одна строка кода, выполняющая базовую проверку, является одним из самых популярных на сегодняшний день пакетов (библиотек) npm для JavaScript.
В выходные, 25 апреля 2020 года, библиотека is-promise
была обновлена, чтобы получить поддержку для работы в качестве модуля ES — стандартизированной модульной системы, используемой языком JavaScript.
Многие вещи в JavaScript зависят от служебного пакета. Как мы видим в этой проблеме, эта служебная функция, единственной целью которой является возврат логического значения, в соответствии с соглашениями об именах, не всегда возвращает логическое значение.
На графике зависимостей видно, что пострадало около 3,4 млн репозиториев.
«По данным NPM, библиотека скачивается более 11,7 млн раз. Только более 3,4 миллиона проектов на GitHub используют этот пакет и используются в качестве зависимости 766 другими библиотеками JavaScript.
Влияние ошибки было ощутимо мгновенно, и оно затронуло кодовые базы JavaScript с закрытым исходным кодом и ряд крупнейших проектов экосистемы JavaScript.
Facebook Create React App (стандартный шаблон для создания React-приложений), Google Angular framework, Google Firebase-tools, Amazon AWS Serverless CLI, Nuxt.js, AVA — вот некоторые из основных проектов, на которые повлияло это критическое изменение.
Плохой релиз, ломающий что-либо, — хорошее напоминание о том, что регрессионное тестирование и закрепление зависимостей необходимы.