{"_id":"@allior/wmake-donatty","name":"@allior/wmake-donatty","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.3":{"name":"@allior/wmake-donatty","version":"0.1.3","description":"Donatty integration for donations and alerts.","type":"module","exports":{".":{"types":"./dist/root/index.d.ts","import":"./dist/root/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js"},"./src/*":"./src/*"},"scripts":{"pub":"npm publish --access public","dev":"vite","build":"bun -e \"import fs from 'node:fs'; try { fs.rmSync('dist', { recursive: true, force: true }); } catch {}\" && bun ../node_modules/vite/bin/vite.js build && bun ../node_modules/cross-env/dist/bin/cross-env.js VITE_IIFE_ENTRY=root bun ../node_modules/vite/bin/vite.js build --config vite.iife.config.ts && bun ../node_modules/cross-env/dist/bin/cross-env.js VITE_IIFE_ENTRY=react bun ../node_modules/vite/bin/vite.js build --config vite.iife.config.ts && bun ../node_modules/typescript/lib/tsc.js -p tsconfig.types.json","clean":"rimraf dist","prepublishOnly":"bun run build"},"keywords":[],"author":{"name":"An1by"},"license":"CC-BY-SA-4.0","devDependencies":{"cross-env":"^10.1.0","rimraf":"^6.0.1"},"dependencies":{"eventsource":"^4.1.0","react":"^19.2.0","react-dom":"^19.2.0"},"gitHead":"c7577ca38e30197941e1f97c59b5dbfb2ae441c2","_id":"@allior/wmake-donatty@0.1.3","_nodeVersion":"25.2.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-IIdxcqzTD8Q3LPMC02HUf+y8ghcCZmj38huVzRfTeJEEkwB2Fhn+tkHruhK2Bejpq87UGzU61sTwFbnCajdPkw==","shasum":"a48fe8e94636e7aa04d35e855eec8e2efd43d7c8","tarball":"https://registry.npmjs.org/@allior/wmake-donatty/-/wmake-donatty-0.1.3.tgz","fileCount":70,"unpackedSize":312578,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDRl5HLAX2g3B9iHjhS7zlYN0o2uUWrD25eEjlRHsHHCAiEAnL4Uf2D94FqcfeS9TIorueznpxsHQiX9sN7dWN5kGaY="}]},"_npmUser":{"name":"an1by","email":"mrkillermafia@gmail.com"},"directories":{},"maintainers":[{"name":"an1by","email":"mrkillermafia@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/wmake-donatty_0.1.3_1781252589547_0.27304403087646767"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-12T08:23:09.389Z","0.1.3":"2026-06-12T08:23:09.698Z","modified":"2026-06-12T08:23:09.984Z"},"maintainers":[{"name":"an1by","email":"mrkillermafia@gmail.com"}],"description":"Donatty integration for donations and alerts.","keywords":[],"author":{"name":"An1by"},"license":"CC-BY-SA-4.0","readme":"# @allior/wmake-donatty\r\n\r\nБиблиотека для интеграции с сервисом Donatty. Поддерживает работу с API и получение событий в реальном времени через SSE (Server-Sent Events).\r\n\r\n## Установка\r\n\r\n```bash\r\nbun add @allior/wmake-donatty\r\n# или\r\nnpm install @allior/wmake-donatty\r\n```\r\n\r\n## Возможности\r\n\r\n- 🔑 **Авторизация**: Получение токенов через `widgetToken`.\r\n- 📡 **SSE (Real-time)**: Подписка на события виджетов (донаты, цели, общие суммы) и ленту стримера.\r\n- 📜 **События**: Получение списка прошедших событий и донатов.\r\n- 👤 **Профиль**: Получение данных текущего пользователя.\r\n- 🏗 **TypeScript**: Полная типизация всех ответов и параметров.\r\n\r\n## Быстрый старт\r\n\r\n### Получение токена авторизации\r\n\r\nДля работы с большинством методов требуется `accessToken` (JWT). Его можно получить, зная `widgetToken` (токен виджета из URL настроек Donatty).\r\n\r\n```typescript\r\nimport { getAuthTokens } from \"@allior/wmake-donatty\";\r\n\r\nconst { accessToken } = await getAuthTokens(\"your_widget_token\");\r\n```\r\n\r\n### Подписка на события (SSE)\r\n\r\nБиблиотека позволяет подключаться к стриму событий Donatty.\r\n\r\n```typescript\r\nimport { DonattySSEClient, getAuthTokens } from \"@allior/wmake-donatty\";\r\n\r\nasync function connectToAlerts() {\r\n    const WIDGET_TOKEN = \"xxx\";\r\n    const WIDGET_REF = \"yyy\"; // ID виджета (ref из URL)\r\n\r\n    const { accessToken } = await getAuthTokens(WIDGET_TOKEN);\r\n    \r\n    // Создаем клиент для виджета оповещений (Alerts)\r\n    const client = DonattySSEClient.forDonationsWidget(WIDGET_REF, accessToken);\r\n\r\n    client.on(\"DATA\", (msg) => {\r\n        console.log(\"Новое событие:\", msg.data);\r\n    });\r\n\r\n    client.connect();\r\n}\r\n```\r\n\r\n### Получение списка донатов\r\n\r\n```typescript\r\nimport { DonattyEventsClient } from \"@allior/wmake-donatty\";\r\n\r\nconst client = new DonattyEventsClient(accessToken);\r\nconst donations = await client.getDonations(10); // Последние 10 донатов\r\n\r\nconsole.log(donations.response.items);\r\n```\r\n\r\n### React: хуки для SSE\r\n\r\nБиблиотека предоставляет набор хуков для удобной работы с SSE в React-приложениях.\r\n\r\n#### Автоматическое подключение (лента стримера)\r\n\r\n```tsx\r\nimport { useDonattyStreamerSSE } from \"@allior/wmake-donatty/react\";\r\n\r\nfunction App() {\r\n  const { isConnected } = useDonattyStreamerSSE(\"YOUR_JWT_TOKEN\", {\r\n    handlers: {\r\n      \"STREAM_EVENT\": (data) => console.log(\"Новое событие:\", data.event),\r\n    }\r\n  });\r\n\r\n  return <div>Статус: {isConnected ? \"Подключено\" : \"Отключено\"}</div>;\r\n}\r\n```\r\n\r\n#### Работа с виджетами\r\n\r\n```tsx\r\nimport { useDonattyDonationsWidget } from \"@allior/wmake-donatty/react\";\r\n\r\nfunction Alerts() {\r\n  const { isConnected } = useDonattyDonationsWidget(\"WIDGET_REF_ID\", \"JWT_TOKEN\", {\r\n    handlers: {\r\n      \"DATA\": (msg) => console.log(\"Оповещение:\", msg.data),\r\n    }\r\n  });\r\n\r\n  return <div>Оповещения: {isConnected ? \"Работают\" : \"Загрузка...\"}</div>;\r\n}\r\n```\r\n\r\nДоступные хуки:\r\n- `useDonattySSE` — базовый хук.\r\n- `useDonattyStreamerSSE(jwt, options)` — лента событий стримера.\r\n- `useDonattyGoalWidget(refId, jwt, options)` — виджет целей.\r\n- `useDonattyTotalWidget(refId, jwt, options)` — виджет общей суммы.\r\n- `useDonattyDonationsWidget(refId, jwt, options)` — виджет оповещений.\r\n\r\n## API Reference\r\n\r\n### `DonattySSEClient`\r\n\r\nКласс для работы с Server-Sent Events.\r\n\r\n- `static forStreamer(jwt)` — лента событий для дашборда стримера.\r\n- `static forWidget(refId, jwt)` — общий метод для виджетов.\r\n- `static forGoalWidget(refId, jwt)` — виджет \"Цель\".\r\n- `static forTotalWidget(refId, jwt)` — виджет \"Общая сумма\".\r\n- `static forDonationsWidget(refId, jwt)` — виджет \"Оповещения\".\r\n- `connect()` — установить соединение.\r\n- `disconnect()` — закрыть соединение.\r\n- `on(event, handler)` — подписаться на событие.\r\n- `off(event, handler)` — отписаться.\r\n\r\n### `DonattyEventsClient`\r\n\r\nКласс для получения исторических данных.\r\n\r\n- `get(params)` — получить список событий с фильтрами.\r\n- `getDonations(maxResults)` — получить только донаты.\r\n\r\n### Вспомогательные функции\r\n\r\n- `getAuthTokens(widgetToken)` — обмен токена виджета на JWT.\r\n- `getMe(accessToken)` — получение профиля пользователя.\r\n\r\n## Примеры\r\n\r\nБольше примеров можно найти в директории `examples/`:\r\n- `react-hooks-usage.tsx` — использование хуков в React.\r\n- `handle-events.ts` — отладка всех SSE событий.\r\n- `handle-goal-widget.ts` — работа с виджетом целей.\r\n- `fetch-events.ts` — работа с историей событий.\r\n\r\n## Лицензия\r\n\r\nCC BY-SA 4.0\r\n","readmeFilename":"README.md","_rev":"1-ed10d5d9290f1d843f77b2b1fd259a5b"}