https://github.com/ilyhalight/jmap-yacl
Yet Another client library for working with jmap
https://github.com/ilyhalight/jmap-yacl
Last synced: 8 months ago
JSON representation
Yet Another client library for working with jmap
- Host: GitHub
- URL: https://github.com/ilyhalight/jmap-yacl
- Owner: ilyhalight
- License: mit
- Created: 2024-04-28T12:26:15.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-06-04T18:27:56.000Z (about 1 year ago)
- Last Synced: 2025-06-04T23:24:26.609Z (about 1 year ago)
- Language: TypeScript
- Homepage: https://ilyhalight.github.io/jmap-yacl/
- Size: 867 KB
- Stars: 11
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README-RU.md
- Changelog: changelog.md
- License: LICENSE
Awesome Lists containing this project
README
# jmap-yacl
[](https://github.com/ilyhalight/jmap-yacl/actions/workflows/build.yml)
[](https://www.npmjs.com/package/jmap-yacl)
[](README.md)
[](README-RU.md)
Еще одна легковестная клиентская библиотека для работы с JMAP, которая поддерживает работу с JavaScript, TypeScript, а так же имеет встроенные типы для Typebox.
## Установка
Установка через Bun:
```bash
bun install jmap-yacl
```
Установка через NPM:
```bash
npm install jmap-yacl
```
## Информация
Библиотека разрабатывалась и тестировалась с использованием [stalwart mail-server](https://github.com/stalwartlabs/mail-server), работа с другими JMAP серверами не гарантирована (в теории должна быть из-за соответствия RFC). Поддерживается только базовая аутентификация (username + password).
Реализовано:
- стандарт JMAP согласно [RFC 8620](https://datatracker.ietf.org/doc/rfc8620/) (без Push)
- стандарт JMAP Mail согласно [RFC 8621](https://datatracker.ietf.org/doc/rfc8621/)
Вдохновение:
- [stalwartlabs/jmap-client](https://github.com/stalwartlabs/jmap-client)
- [htunnicliff/jmap-jam](https://github.com/htunnicliff/jmap-jam)
Соответствие стандартам:
- [RFC 8620 - The JSON Meta Application Protocol (JMAP)](https://datatracker.ietf.org/doc/rfc8620/)
- [RFC 8621 - The JSON Meta Application Protocol (JMAP) for Mail](https://datatracker.ietf.org/doc/html/rfc8621)
- [RFC 7807 - Problem Details in HTTP APIs](https://datatracker.ietf.org/doc/rfc7807/)
## Начало работы
Для начала работы с API необходимо создать JMAP Client и авторизовать его. Это можно сделать с помощью нескольких строчек представленных ниже:
```ts
const client = new JMAPClient({
username: process.env.JMAP_USERNAME,
password: process.env.JMAP_PASSWORD,
});
await client.connect("https://YOURDOMAIN/.well-known/jmap");
```
Для того, чтобы сделать запрос к JMAP вы можете использовать два вида запросов:
1. Готовые методы для простых одиночных запросов к серверу
2. "Сырые" запросы, если хотите сделать сложный запрос к серверу
```ts
const client = ...
// ready methods
const identityResponse = await client.identity.get({
accountId: "abc",
});
// raw requests
const identityResponse = await client.request<
JMAP.GetResponse
>("/jmap", {
using: [JMAP.Using.mail],
invocation: [
"Identity/get",
{
accountId: "abc",
},
"a",
],
});
```
## Сборка
1. Установите [Bun](https://bun.sh/)
2. Установите зависимости:
```bash
bun install
```
3. Запустите сборку:
```bash
bun build:all
```
## Тесты
Библиотека имеет минимальное покрытие тестами для проверки ее работоспособности.
Запустить тесты:
```bash
bun test
```