Малоизвестные возможности Node.js
Саймон Плендерлит написал несколько небольших статей, посвящённых малоизвестным возможностям Node.js — "What’s new in Node.js core?".
В Node.js появилась встроенная поддержка генерации UUID с помощью метода
Есть поддержка
Для импорта встроенных модулей можно использовать протокол
Появилась поддержка promise-based API —
#nodejs
https://simonplend.com/whats-new-in-node-js-core/
Саймон Плендерлит написал несколько небольших статей, посвящённых малоизвестным возможностям Node.js — "What’s new in Node.js core?".
В Node.js появилась встроенная поддержка генерации UUID с помощью метода
randomUUID из модуля crypto. Доступно в Node.js v14.17.0 и выше.Есть поддержка
AbortController для отмены асинхронных операций. Доступен в версии 14.17.0 (экспериментально), стабильная поддержка добавлена в 15.4.0.Для импорта встроенных модулей можно использовать протокол
node:. Его использование помогает отделить внутренние модули от внешних: import url from "node:url";. Доступно в v12.20.0 (ESM), v14.13.1 (ESM) и v16.0.0 (ESM, CommonJS).Появилась поддержка promise-based API —
timers/promises и stream/promises (v15.0.0 и выше). Также есть относительно старые fs/promises (первая ревизия API была добавлена в v10.0.0) и dns/promises (v10.6.0).#nodejs
https://simonplend.com/whats-new-in-node-js-core/
Simon Plenderleith
What's new in Node.js core?
It can be so easy to miss when new features are added to Node.js core. This series will help you stay up-to-date.
Удалённое выполнение кода в популярном npm-пакете
Тим Перри нашёл серьёзную уязвимость в npm-пакете pac-resolver (3 миллиона еженедельных загрузок) — "Proxies are complicated: RCE vulnerability in a 3 million downloads/week NPM package".
Администраторы предприятий часто используют PAC-файл для автоматической настройки HTTP-прокси в браузерах и других сетевых программах. Путь до этого файла добавляется вручную или автоматически с помощью протокола WPAD. Пакет pac-resolver упрощает работу с такими файлами в Node.js и является зависимостью proxy-agent. Proxy-agent в свою очередь используют Firebase CLI, AWS CDK и другие утилиты.
PAC — очень старый механизм, который был впервые добавлен в Netscape Navigator 2.0 в 1996-году и стал неофициальным стандартом. Содержимое PAC-файла — обычный JavaScript, который должен запускаться в изолированном контексте. Проблема в том, что pac-resolver запускал этот код с помощью модуля
Проблема была исправлена два месяца назад в pac-resolver v5.0.0. В новой версии используется пакет vm2, который был сделан специально для запуска потенциально опасного кода.
#security #nodejs
https://httptoolkit.tech/blog/npm-pac-proxy-agent-vulnerability/
Тим Перри нашёл серьёзную уязвимость в npm-пакете pac-resolver (3 миллиона еженедельных загрузок) — "Proxies are complicated: RCE vulnerability in a 3 million downloads/week NPM package".
Администраторы предприятий часто используют PAC-файл для автоматической настройки HTTP-прокси в браузерах и других сетевых программах. Путь до этого файла добавляется вручную или автоматически с помощью протокола WPAD. Пакет pac-resolver упрощает работу с такими файлами в Node.js и является зависимостью proxy-agent. Proxy-agent в свою очередь используют Firebase CLI, AWS CDK и другие утилиты.
PAC — очень старый механизм, который был впервые добавлен в Netscape Navigator 2.0 в 1996-году и стал неофициальным стандартом. Содержимое PAC-файла — обычный JavaScript, который должен запускаться в изолированном контексте. Проблема в том, что pac-resolver запускал этот код с помощью модуля
vm, механизм изоляции которого легко обходится, тем самым открывая вектор для удалённого выполнения кода.Проблема была исправлена два месяца назад в pac-resolver v5.0.0. В новой версии используется пакет vm2, который был сделан специально для запуска потенциально опасного кода.
#security #nodejs
https://httptoolkit.tech/blog/npm-pac-proxy-agent-vulnerability/
Httptoolkit
Proxies are complicated: RCE vulnerability in a 3 million downloads/week NPM package
Pac-Resolver, a widely used NPM dependency, had a high-severity RCE (Remote Code Execution) vulnerability that could allow network administrators or other...
Использование AbortController и AbortSignal в Node.js
Джеймс Снелл — контрибьютор Node.js — написал статью про использование AbortController и AbortSignal в Node.js — "Using AbortSignal in Node.js".
Последние два года разработчики Node.js работают над добавлением разных API web-платформы. Результатом этой работы стала реализация AbortController, который появился в стабильной версии Node.js 16.
AbortController и AbortSignal реализуют интерфейс для отмены выполнения асинхронных операций. С его помощью можно прерывать таймеры, асинхронные запросы, отписываться от событий, добавленных с помощью интерфейса EventTarget, который поддерживают некоторые API Node.js. В статье рассказывается о том как использовать AbortController и AbortSignal на примере прерывания асинхронного события по таймауту.
Рекомендую почитать статью всем, так как AbortController доступен не только в Node.js, но и во всех актуальных браузерах.
#nodejs #async #api
https://www.nearform.com/blog/using-abortsignal-in-node-js/
Джеймс Снелл — контрибьютор Node.js — написал статью про использование AbortController и AbortSignal в Node.js — "Using AbortSignal in Node.js".
Последние два года разработчики Node.js работают над добавлением разных API web-платформы. Результатом этой работы стала реализация AbortController, который появился в стабильной версии Node.js 16.
AbortController и AbortSignal реализуют интерфейс для отмены выполнения асинхронных операций. С его помощью можно прерывать таймеры, асинхронные запросы, отписываться от событий, добавленных с помощью интерфейса EventTarget, который поддерживают некоторые API Node.js. В статье рассказывается о том как использовать AbortController и AbortSignal на примере прерывания асинхронного события по таймауту.
Рекомендую почитать статью всем, так как AbortController доступен не только в Node.js, но и во всех актуальных браузерах.
#nodejs #async #api
https://www.nearform.com/blog/using-abortsignal-in-node-js/
Nearform
Using AbortSignal in Node.js | Nearform
Nearform is an independent team of engineers, designers and strategists. We build digital capability and software solutions for ambitious enterprises seeking sustained business impact. We love what we do.
Релиз Node.js 17 и план релиза Node.js 16 LTS
Сегодня вышла новая мажорная версия Node.js, которая становится веткой current — "Node.js 17 is here!".
В новой версии продолжается работа над промисификацией основных API — была добавлена поддержка промисов в модуль
На следующей неделе запланирован перевод Node.js 16 в статус LTS с поддержкой до 30 апреля 2024 года. Node.js 16 LTS будет первой версией, которая будет поставляться с бинарниками для процессоров семейства Apple M1.
Поддержка Node.js 12 LTS заканчивается в апреле 2022 года. Разработчики рекомендуют обновиться на новую версию.
#nodejs #release
https://medium.com/the-node-js-collection/node-js-17-is-here-8dba1e14e382
Сегодня вышла новая мажорная версия Node.js, которая становится веткой current — "Node.js 17 is here!".
В новой версии продолжается работа над промисификацией основных API — была добавлена поддержка промисов в модуль
readline. OpenSSL обновлён до третьей версии. Стек-трейсы по умолчанию будут включать версию Node.js. V8 обновлён до версии 9.5. В нём появилась поддержка новых типов для Intl.DisplayNames и новых опций форматирования часового пояса в Intl.DateTimeFormat.На следующей неделе запланирован перевод Node.js 16 в статус LTS с поддержкой до 30 апреля 2024 года. Node.js 16 LTS будет первой версией, которая будет поставляться с бинарниками для процессоров семейства Apple M1.
Поддержка Node.js 12 LTS заканчивается в апреле 2022 года. Разработчики рекомендуют обновиться на новую версию.
#nodejs #release
https://medium.com/the-node-js-collection/node-js-17-is-here-8dba1e14e382
Medium
Node.js 17 is here!
This blog was written by Bethany Griggs, with additional contributions from the Node.js Technical Steering Committee and project…
Cовременные возможности для работы с JavaScript-модулями
Аксель Раушмайер написал статью про современные возможности для работы с JavaScript-модулями — "Publishing and consuming ECMAScript modules via packages – the big picture".
Последние версии Node.js поддерживают package exports и package imports. Package exports используются авторами библиотек для настройки путей, по которым будет доступен импорт модулей. Package imports позволяют создавать альясы на пакеты или модули. Их можно использовать для подмены реализации модуля в зависимости от окружения. Package exports и package imports настраиваются в package.json.
В браузерах скоро появится поддержка import maps. С их помощью можно создавать альясы, относительно которых будут резолвиться спецификаторы модулей в браузере. Это полезно при доставке кода пользователям в чистом ESM, когда в названии файлов модулей есть хеши. Import maps уже используют в проде авторы почтового клиента hey.
#js #esm #nodejs #npm
https://2ality.com/2022/01/esm-specifiers.html
Аксель Раушмайер написал статью про современные возможности для работы с JavaScript-модулями — "Publishing and consuming ECMAScript modules via packages – the big picture".
Последние версии Node.js поддерживают package exports и package imports. Package exports используются авторами библиотек для настройки путей, по которым будет доступен импорт модулей. Package imports позволяют создавать альясы на пакеты или модули. Их можно использовать для подмены реализации модуля в зависимости от окружения. Package exports и package imports настраиваются в package.json.
В браузерах скоро появится поддержка import maps. С их помощью можно создавать альясы, относительно которых будут резолвиться спецификаторы модулей в браузере. Это полезно при доставке кода пользователям в чистом ESM, когда в названии файлов модулей есть хеши. Import maps уже используют в проде авторы почтового клиента hey.
#js #esm #nodejs #npm
https://2ality.com/2022/01/esm-specifiers.html
🔥7👍5