{"id":18990647,"url":"https://github.com/ilyhalight/jmap-yacl","last_synced_at":"2025-10-24T01:01:39.406Z","repository":{"id":237967110,"uuid":"793099166","full_name":"ilyhalight/jmap-yacl","owner":"ilyhalight","description":"Yet Another client library for working with jmap","archived":false,"fork":false,"pushed_at":"2025-06-04T18:27:56.000Z","size":888,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-04T23:24:26.609Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ilyhalight.github.io/jmap-yacl/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ilyhalight.png","metadata":{"files":{"readme":"README-RU.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-04-28T12:26:15.000Z","updated_at":"2025-06-04T18:27:52.000Z","dependencies_parsed_at":"2024-05-20T21:11:06.607Z","dependency_job_id":"0dcdfa1d-330d-4144-a451-fe544dea0498","html_url":"https://github.com/ilyhalight/jmap-yacl","commit_stats":null,"previous_names":["ilyhalight/jmap-yacl"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilyhalight%2Fjmap-yacl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilyhalight%2Fjmap-yacl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilyhalight%2Fjmap-yacl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilyhalight%2Fjmap-yacl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ilyhalight","download_url":"https://codeload.github.com/ilyhalight/jmap-yacl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilyhalight%2Fjmap-yacl/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259053487,"owners_count":22798436,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T17:10:47.813Z","updated_at":"2025-10-24T01:01:39.297Z","avatar_url":"https://github.com/ilyhalight.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jmap-yacl\n\n[![GitHub Actions](https://github.com/ilyhalight/jmap-yacl/actions/workflows/build.yml/badge.svg)](https://github.com/ilyhalight/jmap-yacl/actions/workflows/build.yml)\n[![npm](https://img.shields.io/bundlejs/size/jmap-yacl)](https://www.npmjs.com/package/jmap-yacl)\n[![en](https://img.shields.io/badge/lang-English%20%F0%9F%87%AC%F0%9F%87%A7-white)](README.md)\n[![ru](https://img.shields.io/badge/%D1%8F%D0%B7%D1%8B%D0%BA-%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%20%F0%9F%87%B7%F0%9F%87%BA-white)](README-RU.md)\n\nЕще одна легковестная клиентская библиотека для работы с JMAP, которая поддерживает работу с JavaScript, TypeScript, а так же имеет встроенные типы для Typebox.\n\n## Установка\n\nУстановка через Bun:\n\n```bash\nbun install jmap-yacl\n```\n\nУстановка через NPM:\n\n```bash\nnpm install jmap-yacl\n```\n\n## Информация\n\nБиблиотека разрабатывалась и тестировалась с использованием [stalwart mail-server](https://github.com/stalwartlabs/mail-server), работа с другими JMAP серверами не гарантирована (в теории должна быть из-за соответствия RFC). Поддерживается только базовая аутентификация (username + password).\n\nРеализовано:\n\n- стандарт JMAP согласно [RFC 8620](https://datatracker.ietf.org/doc/rfc8620/) (без Push)\n- стандарт JMAP Mail согласно [RFC 8621](https://datatracker.ietf.org/doc/rfc8621/)\n\nВдохновение:\n\n- [stalwartlabs/jmap-client](https://github.com/stalwartlabs/jmap-client)\n- [htunnicliff/jmap-jam](https://github.com/htunnicliff/jmap-jam)\n\nСоответствие стандартам:\n\n- [RFC 8620 - The JSON Meta Application Protocol (JMAP)](https://datatracker.ietf.org/doc/rfc8620/)\n- [RFC 8621 - The JSON Meta Application Protocol (JMAP) for Mail](https://datatracker.ietf.org/doc/html/rfc8621)\n- [RFC 7807 - Problem Details in HTTP APIs](https://datatracker.ietf.org/doc/rfc7807/)\n\n## Начало работы\n\nДля начала работы с API необходимо создать JMAP Client и авторизовать его. Это можно сделать с помощью нескольких строчек представленных ниже:\n\n```ts\nconst client = new JMAPClient({\n  username: process.env.JMAP_USERNAME,\n  password: process.env.JMAP_PASSWORD,\n});\n\nawait client.connect(\"https://YOURDOMAIN/.well-known/jmap\");\n```\n\nДля того, чтобы сделать запрос к JMAP вы можете использовать два вида запросов:\n\n1. Готовые методы для простых одиночных запросов к серверу\n2. \"Сырые\" запросы, если хотите сделать сложный запрос к серверу\n\n```ts\n  const client = ...\n\n  // ready methods\n  const identityResponse = await client.identity.get({\n    accountId: \"abc\",\n  });\n\n  // raw requests\n  const identityResponse = await client.request\u003c\n    JMAP.GetResponse\u003cJMAPMail.Identity[]\u003e\n  \u003e(\"/jmap\", {\n    using: [JMAP.Using.mail],\n    invocation: [\n      \"Identity/get\",\n      {\n        accountId: \"abc\",\n      },\n      \"a\",\n    ],\n  });\n```\n\n## Сборка\n\n1. Установите [Bun](https://bun.sh/)\n\n2. Установите зависимости:\n\n```bash\nbun install\n```\n\n3. Запустите сборку:\n\n```bash\nbun build:all\n```\n\n## Тесты\n\nБиблиотека имеет минимальное покрытие тестами для проверки ее работоспособности.\n\nЗапустить тесты:\n\n```bash\nbun test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filyhalight%2Fjmap-yacl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Filyhalight%2Fjmap-yacl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filyhalight%2Fjmap-yacl/lists"}