Код Читати оригінал на Infoq 2 хв читання 0

Вихід Ky 2.0: оновлення JavaScript-клієнта з підтримкою Zod

JavaScript-клієнт Ky від Sindre Sorhus випустив масштабне оновлення версії 2.0, яке значно покращує роботу з Fetch API порівняно з конкурентами. Розробники впровадили уніфіковані хуки, інтегрована валідацію схем через Zod та Valibot, а також новий механізм керування таймаутами для складних операцій. Оновлення робить Ky більш стабільним інструментом для професійної розробки на Node.js, Bun та Deno, зберігаючи при цьому мінімальний розмір бібліотеки.

Група людей працює над архітектурними планами на великому робочому столі, обговорюючи деталі проекту поруч із ноутбуком.
Група людей працює над архітектурними планами на великому робочому столі, обговорюючи деталі проекту поруч із ноутбуком. · Джерело зображення: Infoq

За даними Infoq, популярний JavaScript-клієнт Ky отримав своє перше велике оновлення за кілька років. Розробники зосередилися на покращенні архітектури хуків, виправленні тривалих проблем із обробкою URL та додаванні можливостей для суворої типізації відповідей.

Уніфікація хуків та керування таймаутами

Одним із ключових змін у Ky 2.0 є перехід на єдиний об'єкт стану для всіх хуків. Тепер такі функції, як beforeRequest, afterResponse, beforeRetry та beforeError, отримують один аргумент замість окремих параметрів. Це робить API консистентним і спрощує його розширення в майбутньому. Також додано новий хук init, що виконується перед будь-якими іншими діями.

Важливою зміною стала реформа таймаутів. Окрім стандартного таймауту для окремих спроб, з'явився параметр totalTimeout. Він обмежує час виконання всієї операції, включаючи повторні спроби та затримки, викидаючи TimeoutError у разі перевищення ліміту.

Валідація даних та робота з помилками

Ky 2.0 інтегрував підтримку Standard Schema для методу .json(). Це дозволяє розробникам відразу валідувати та типізувати відповіді за допомогою Zod, Valibot або інших сумісних валідаторів. Крім того, об'єкт HTTPError тепер містить попередньо розпарсовану властивість data, що запобігає витокам ресурсів і дозволяє отримувати тіло помилки без додаткових запитів.

Щодо обробки мережевих помилок, команда впровадила спеціальний клас NetworkError. Автоматичні повтори тепер спрацьовують лише на справжні мережеві збої, як-от помилки DNS або відмова у з'єднанні, ігноруючи програмні помилки розробника.

Порівняння з Axios та технічні вимоги

Підтримувач проекту Seth Holladay зазначив, що Ky був створений саме для роботи з Fetch API з самого початку, тоді як Axios намагається адаптуватися до нього, що не завжди дає оптимальний результат. Він також підкреслив кращу підтримку TypeScript у Ky, зокрема вбудовану валідацію схем із виведенням типів.

Нова версія має такі технічні особливості:

  • Вимагає Node.js 22 або новіші версії;
  • Метод .json() тепер викидає помилку на порожніх відповідях та кодах 204 замість повернення порожнього рядка;
  • Параметр searchParams автоматично об'єднується з існуючими запитами в URL;
  • Обробка тіл помилок здійснюється через error.data.

Ky залишається легким рішенням вагою лише у кілька кілобайт, що забезпечує його перевагу як Fetch-native альтернативи для сучасних середовищ виконання.

Контекст для України

Для української спільноти розробників оновлення Ky 2.0 є актуальним через високу популярність Node.js та Bun у локальних стартапах. Оскільки багато українських команд переходять на типизровані архітектури, вбудована підтримка Zod значно спростить роботу з API зовнішніх сервісів без написання додаткових прошаркових шарів. Використання Ky замість Axios дозволяє економити на розмірі бандлу, що критично для швидких веб-додатків, які часто розгортаються українськими командами на хмарних платформах.

Часті запитання

Які технічні вимоги до середовища виконання Ky 2.0?
Для роботи бібліотеки необхідно використовувати Node.js версії 22 або новіші. Ky залишається легким рішенням вагою лише у кілька кілобайт, що робить його ефективною Fetch-native альтернативою для сучасних середовищ виконання.
Як змінилася обробка мережевих помилок та повторів?
Команда впровадила спеціальний клас NetworkError. Автоматичні повтори тепер спрацьовують лише на справжні мережеві збої, такі як помилки DNS або відмова у з'єднанні, ігноруючи програмні помилки розробника.
Які переваги Ky має перед Axios згідно з даними розробників?
Ky був створений саме для роботи з Fetch API з самого початку, тоді як Axios адаптується до нього. Також Ky забезпечує кращу підтримку TypeScript завдяки вбудованій валідації схем із виведенням типів.
Telegram

Свіжі новини у нашому Telegram

Отримуйте миттєві сповіщення про нові публікації в рубриці «Код»

@procodeandevenmore