Обновление для JavaScript-библиотеки «сломало» часть JavaScript-экосистемы

Обновление для JavaScript-библиотеки «сломало» часть JavaScript-экосистемы

Абсурдность ситуации заключается в том, что весь сыр-бор разгорелся из-за JavaScript-библиотеки из двух строк.

image

Обновление для библиотеки JavaScript на прошлых выходных повергло в хаос большую часть JavaScript-экосистемы, причинив головную боль разработчикам миллионов проектов. Абсурдность ситуации заключается в том, что весь сыр-бор разгорелся из-за крошечной JavaScript-библиотеки, состоящей всего из двух строк (так называемый one-liner).

Речь идет о пакете is-promise, позволяющем разработчикам проверять, являются ли JavaScript-объекты объектами Promise. Хотя библиотека состоит всего из двух строк кода для базовой проверки, она является одним из самых популярных в настоящее время npm-пакетов. Согласно данным GitHub, is-promise входит в 3,4 млн проектов и используется в качестве зависимости еще в 766 JavaScript-библиотеках.

На прошлых выходных is-promise была обновлена, чтобы исполнять роль ES-модуля – стандартизированной модульной системы в языке JavaScript. Тем не менее, версия is-promise 2.2.0 не соответствовала надлежащим стандартам ES-модуля. Из-за неправильной реализации поддержки ES-модуля сразу после выхода обновления проекты, использовавшие is-promise в своей цепочке сборки, начали давать сбои.

Эффект от ошибки сказался незамедлительно. Проблема затронула как кодовые базы JavaScript с закрытым исходным кодом, так и некоторые из крупнейших проектов экосистемы JavaScript. Сюда входят: Create React App (стандартный шаблон для создания приложений React) от Facebook, фреймворк Angular.js от Google, Google Firebasse-tools, Amazon AWS Serverless CLI, Nuxt.js, AVAи пр.

Ошибка не привела к сбою существующих проектов, поэтому простоев не было, но разработчики не смогли скомпилировать новые версии своих проектов.

Команда is-promise выпустила обновление, однако оно не смогло устранить проблему, и в конечном итоге от поддержки ES-модуля в версии 2.2.2 пришлось отказаться.

Подписывайтесь на каналы "SecurityLab" в TelegramTelegram и Яндекс.ДзенЯндекс.Дзен, чтобы первыми узнавать о новостях и эксклюзивных материалах по информационной безопасности.

  • А где источник новости? Я вот на npmjs.com смотрю библиотеку is-promise - там версия 4.0.0 (у вас о версии 2.2.*) и от неё зависимы 554 пакета, а не семьсмот. Вторая по результатам поиска - p-is-promise - версия 3.0.0 и судя по всему, точно не о ней речь. Дак о какой именно библиотеке? И да, количество строк - понятие расплывчатое. Многие библиотеки выпускаются в упакованном формате - там одна строка, но размеры килобайты. В вашей новости такие бы библиотеки фигурировали бы как "всего в одну строку"?
  • Ага, всё таки про первую - судя по её комитам в репозитарии - несколько дней назад была версия 2.2.0... Но привести источник бы точно не помешало, если источник не являетесь только вы сами, конечно. И там и вправду 1-2 строки...
Комментарии для сайта Cackle