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 — вот некоторые из основных проектов, на которые повлияло это критическое изменение.

Плохой релиз, ломающий что-либо, — хорошее напоминание о том, что регрессионное тестирование и закрепление зависимостей необходимы.