Discourse2 на npm: обертка TypeScript для API Discourse

Я опубликовал «discourse2» на npm год назад, но недавно уделил ему гораздо больше внимания. По сути, это TypeScript/JavaScript SDK для API Discourse, сгенерированное на основе спецификации OpenAPI проекта Discourse. Это делает работу с ним очень простой:

discourse completion

discourse getTopic type

Использование выглядит следующим образом:

import Discourse from "discourse2";

const discourse = new Discourse("https://discourse.example.org/", {
  "Api-Key": process.env.DISCOURSE_API_KEY,
  "Api-Username": process.env.DISCOURSE_API_USERNAME,
});

const result = await discourse.listLatestTopics();
console.log(result);

Также доступен живой пример на CodeSandbox.

Возможности:

  • Полная поддержка API Discourse (всё, что опубликовано в спецификации OpenAPI).
  • Всегда актуально: спецификация OpenAPI проверяется на наличие изменений ежедневно, а пакет автоматически пересобирается и публикуется при обнаружении изменений. Дата последнего обновления отображается в виде бейджа в верхней части README: Discourse API update date
  • Работает как на сервере, так и в браузере* (полезно для запроса общедоступных данных без ключей API и с соответствующего источника, например, получение списка последних тем и т. д.)

Пожалуйста, поставьте звёздочку на GitHub, чтобы я мог оценить интерес и решить, сколько ещё времени уделить этому проекту. Отзывы приветствуются. Как указано в разделе Notes в README, есть несколько особенностей.

Проект замечательный, большое спасибо :heart:

Всем привет, спасибо за все лайки и поддержку. Несколько обновлений:

:white_check_mark: 86% покрытие тестами; в основном E2E на реальном экземпляре Discourse. Думаю, практически всё, что работает с пользователем system, нужно протестировать с другими пользователями для некоторых методов.

:white_check_mark: Исправили множество ошибок по пути, в основном связанных с PUT-запросами и перенаправлениями.

:white_check_mark: Опубликовано в JSR с оценкой качества 100%. Все версии по-прежнему публикуются совместно в NPM.

:white_check_mark: Улучшены TSDocs. Добавлено поле description, когда оно доступно, а не только summary. Также добавлена документация @module и примеры @example.

:white_check_mark: Разработка велась в Deno v2 для быстрого и удобного процесса разработки. Полное тестирование в node выполняется при каждом коммите, но среда также дружелюбна к альтернативным рантаймам!

:white_check_mark: 425 еженедельных загрузок в NPM (но, вероятно, в основном из-за ботов и частоты релизов :sweat_smile:).

На данный момент я почти завершил работу. Всё ещё хочу уделить немного больше времени безопасности валидации (и, возможно, некоторому приведению типов), но это уже используется в реальных проектах с хорошим эффектом. Пожалуйста, открывайте задачи для сообщений об ошибках или запросов новых функций. И удачного общения на Discourse! :tada: