Skip to content

v1.0.0 - Major changes

Choose a tag to compare

@theDesConnet theDesConnet released this 09 Sep 13:13
· 5 commits to main since this release
a2d6a87

Changelog

Important

AnixartJS v1.0.0 содержит значительные несовместимые изменения и не полностью совместима с версиями v0.x.

Структура проекта и публичный API были существенно переработаны. Если ваш проект использует AnixartJS v0.x, перед обновлением рекомендуется изучить изменения ниже и заранее заложить дополнительное время на миграцию и тестирование.

Добавлено

  • Новая структура проекта:
    • api — реализация эндпоинтов
    • core — клиент, HTTP-транспорт и ошибки
    • models — типы и enum'ы API
    • utils — билдеры, парсеры и вспомогательные утилиты
  • Новый endpoint-based API через client.endpoints.*.
  • Новые группы эндпоинтов для:
    • комментариев к статьям и предложений статей
    • комментариев к коллекциям, избранных коллекций и пользовательских коллекций
    • настроек уведомлений
    • бейджей профиля, блокировок, удаления аккаунта, друзей, health-состояния, списков, настроек, голосов за релизы и ролей
    • эпизодов релизов, избранного, фильтров, истории, связанных релизов, комментариев, стриминговых платформ, видео, жалоб на видео и избранных видео
    • жалоб, импорта, экспорта и других разделов API
  • Новый HTTP-клиент с поддержкой:
    • GET, POST, PUT, DELETE, PATCH, HEAD и OPTIONS
    • JSON, URL-encoded и multipart-запросов
    • авторизации через токен Anixart и Bearer-токен
    • пользовательских заголовков и собственного base URL
  • Новые параметры запросов:
    • timeoutMs
    • signal
    • apiVersion
    • throwOnAnixartError
  • Новые классы ошибок:
    • AnixartError
    • HttpError
  • Новые параметры конфигурации клиента:
    • userAgent
    • throwOnAnixartError
  • Добавлены 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-Agent Anixart.
  • Переработаны экспорты пакета: из основного 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