Repository navigation
v1.0.0 - Major changes
Changelog
Important
AnixartJS v1.0.0 содержит значительные несовместимые изменения и не полностью совместима с версиями v0.x.
Структура проекта и публичный API были существенно переработаны. Если ваш проект использует AnixartJS v0.x, перед обновлением рекомендуется изучить изменения ниже и заранее заложить дополнительное время на миграцию и тестирование.
Добавлено
- Новая структура проекта:
api— реализация эндпоинтовcore— клиент, HTTP-транспорт и ошибкиmodels— типы и enum'ы APIutils— билдеры, парсеры и вспомогательные утилиты
- Новый endpoint-based API через
client.endpoints.*. - Новые группы эндпоинтов для:
- комментариев к статьям и предложений статей
- комментариев к коллекциям, избранных коллекций и пользовательских коллекций
- настроек уведомлений
- бейджей профиля, блокировок, удаления аккаунта, друзей, health-состояния, списков, настроек, голосов за релизы и ролей
- эпизодов релизов, избранного, фильтров, истории, связанных релизов, комментариев, стриминговых платформ, видео, жалоб на видео и избранных видео
- жалоб, импорта, экспорта и других разделов API
- Новый HTTP-клиент с поддержкой:
GET,POST,PUT,DELETE,PATCH,HEADиOPTIONS- JSON, URL-encoded и multipart-запросов
- авторизации через токен Anixart и Bearer-токен
- пользовательских заголовков и собственного base URL
- Новые параметры запросов:
timeoutMssignalapiVersionthrowOnAnixartError
- Новые классы ошибок:
AnixartErrorHttpError
- Новые параметры конфигурации клиента:
userAgentthrowOnAnixartError
- Добавлены
setToken(),getBaseUrl()иsetBaseUrl(). - Добавлена полноценная документация на базе VitePress и TypeDoc.
- Добавлены руководства по авторизации, параметрам запросов, обработке ошибок и пагинации.
- Добавлены готовые примеры для авторизации, поиска, профилей, закладок, создания статей и парсинга ссылок.
- Добавлен парсер HLS master playlist.
Изменено
- Полностью переработана внутренняя архитектура AnixartJS.
- Публичный API теперь строится вокруг
client.endpoints.*вместо high-level методов классаAnixart. - Реализация эндпоинтов разделена на отдельные классы по функциональным областям.
- Изменён процесс авторизации:
- для входа используется
client.endpoints.auth.signIn(...) - полученный токен устанавливается через
client.setToken(...)
- для входа используется
- Полностью переработаны модели данных.
- Модели теперь ближе соответствуют оригинальным ответам API Anixart.
- Имена полей могут отличаться от
v0.xи использовать API-style формат, напримерtitle_ru. - Выполнение запросов перенесено со старого
client.call()на новыйHttpClient. - Ошибки API теперь могут выбрасываться как типизированные исключения
AnixartError. - Стандартный API endpoint изменён с
https://api-s.anixsekai.comнаhttps://api.anixsekai.com. - Обновлён стандартный
User-AgentAnixart. - Переработаны экспорты пакета: из основного entrypoint теперь доступны новые модели, параметры запросов, ошибки и утилиты.
- Обновлены TypeScript и типы Node.js.
- Упрощены build-скрипты и добавлен
test:typecheck.
Удалено / Breaking Changes
- Удалён старый high-level API класса
Anixart, включая:getChannelById()getProfileById()getLatestFeed()getRandomRelease()getArticleById()getReleaseById()getCollectionById()getFavoriteCollections()getAllCollections()login()call()
- Удалён старый подход с wrapper-классами для релизов, профилей, статей, каналов и коллекций.
- Код из
v0.x, который напрямую использовал изменяемые поля клиента или методы wrapper-классов, необходимо адаптировать под новый API клиента и эндпоинтов. - Код, завязанный на старые имена полей моделей, типы результатов или helper-методы, потребует изменений.
Миграция с v0.x
Старый код на v0.x:
const anixart = new Anixart({});
const release = await anixart.getReleaseById(101, true);
if (release) {
console.log(release.titleRu);
}Новый API в v1.0.0:
const client = new Anixart({});
const { release } = await client.endpoints.release.get(
101,
true,
{ timeoutMs: 15_000 }
);
console.log(release.title_ru);Авторизация также изменилась.
Раньше:
await client.login(username, password);Теперь:
const result = await client.endpoints.auth.signIn({
login: username,
password
});
client.setToken(result.profileToken?.token);При миграции существующего проекта с v0.x рекомендуется отдельно проверить:
- вызовы старых helper-методов
Anixart - процесс авторизации
- модели и имена полей
- обработку ошибок
- работу с токеном
- импортируемые типы и enum'ы
- код, завязанный на старые wrapper-классы сущностей
Рекомендуется сначала протестировать переход в отдельной ветке и только после этого обновлять зависимость в production-проекте.
Полный список изменений: v0.1.8...v1.0.0