{"_id":"@alt-point/notificator","_rev":"4-e9739e84ce1f1b10f34a85ed8c9cd19e","name":"@alt-point/notificator","dist-tags":{"latest":"1.0.10"},"versions":{"1.0.9":{"name":"@alt-point/notificator","description":"Adonis notification library","author":{"name":"Vladislav O. Muschinskikh","email":"i@vlad.guru"},"repository":{"type":"git","url":"git+https://gitlab.com/altpoint-services/adonis-packages/notificator.git"},"license":"MIT","dependencies":{"@adonisjs/fold":"*","firebase-admin":"^8.12.1","lodash":"*","moment":"*"},"version":"1.0.9","gitHead":"2c90c2b9b8373ec9c38224744657a55bf2670c3a","bugs":{"url":"https://gitlab.com/altpoint-services/adonis-packages/notificator/issues"},"homepage":"https://gitlab.com/altpoint-services/adonis-packages/notificator#readme","_id":"@alt-point/notificator@1.0.9","_nodeVersion":"13.14.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-VDKqnX9Omt60zdJMfaiHme3qLJdvuhK5SMaszJXVn3wiTreHy/YKb6djlgIeqGrWPu+euAuquIQxfnRzI+KIiw==","shasum":"bd4374d45fc2329bb2a44b9828102ea01f59f765","tarball":"https://registry.npmjs.org/@alt-point/notificator/-/notificator-1.0.9.tgz","fileCount":4,"unpackedSize":11203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKu8gCRA9TVsSAnZWagAAMVUP/1pcmD+Io5H2DkGwVXsP\nQLLR4k3l2UMmrj167DdRtvVBv+mjn5/p7A6iVXuJYKEGs92GTnLzFJyKUiQ5\ntR59wwYkw0ZGpdNxJGb3FHK08QmjCGXKt3UdKDDao3wk4m8t39FwUGKSVSAx\n7qCk+3ZTK5vjUSMoyQXiixVawyvNA/gF8bzKB2A6e0bUzhCCNL6eMfPjUevP\np1p5wSTzmkmS/eZC4oWmBHjaPi7gItiPeW6jY6igfAgasEevaoXzo4tCJ9xe\nplaBHy8b3OcNjwp4f7H60xNFAv9j+qv3L+r+AsVmunO7VDKbLvHBhTZjQUqF\n9kMawKDESygGKVvTgNn+NeN5SFu40KCYkkA8Edp6KT9aaU/bJDug4jyo5scj\nOBEX2u2L4ahyVrEaAFO7+cijrr+Cxt09nJzVPS5OYyIzShcT72ceTbre81xK\nKfQVxCyReC5eaGKtd+z7Nc8nJ/I4bkLJmXNzwq9A0uf7bRUQ4qPXf8O6/TCp\naw9mvHIXd6spzhkeYNXg3nDLI6uCRjnCd0I6vjlU9f2fjSuiFMnvLpZwgGql\nuQCfzULAt/j3rd/0jwPnfn3ccP+wCfH16cxznQSJzTsbiPX8L9kveE78yIEQ\nP2/szZHrAHG1vj4Bosl3qt3ellM36TOslY92bgJHaxMitdwRkkv7RYWkshnx\nxakI\r\n=IaJc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHXNNRnV2QRZaJBApCrpkLzVs548nQKn20SyYY8/pR4dAiBqrOiF2zxcDxh+giZ74PGPfdTlhKhaqpSdTNpGiul21A=="}]},"maintainers":[{"name":"vladismus","email":"i@vlad.guru"}],"_npmUser":{"name":"vladismus","email":"i@vlad.guru"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/notificator_1.0.9_1596649247821_0.02414483812842727"},"_hasShrinkwrap":false},"1.0.10":{"name":"@alt-point/notificator","description":"Adonis notification library","author":{"name":"Vladislav O. Muschinskikh","email":"i@vlad.guru"},"repository":{"type":"git","url":"git+https://gitlab.com/altpoint-services/adonis-packages/notificator.git"},"license":"MIT","dependencies":{"@adonisjs/fold":"*","firebase-admin":"^8.12.1","lodash":"*","moment":"*"},"version":"1.0.10","gitHead":"879a4f12778de9a0706f850a713f2d3784011aad","bugs":{"url":"https://gitlab.com/altpoint-services/adonis-packages/notificator/issues"},"homepage":"https://gitlab.com/altpoint-services/adonis-packages/notificator#readme","_id":"@alt-point/notificator@1.0.10","_nodeVersion":"13.14.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-L2vByYr+Pooi2zpyzpX+T5s8fsnssQPyV84pHNq1ydGiy4s/5TnKUhiPv/TLopZayHodbcdcsCRwYn5YoCpvXg==","shasum":"72de6cefd84fd676a03a1f99fadf50ee54072765","tarball":"https://registry.npmjs.org/@alt-point/notificator/-/notificator-1.0.10.tgz","fileCount":4,"unpackedSize":11147,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKvAlCRA9TVsSAnZWagAAfpoP/infI8gyggAPiUaXL71K\n50DbEDJOAeop3E5hXO60UvnLYhtJ4vyOaIX1ynI8aA1vGroRm3iif9Z82NAc\nDdOEQ4pytJ9N6nqNwtRh1+ACMkt6A3gzlypXTE2lKSHyDdXdGdWTFTVr9wZL\nPxtJxbmbIS4svcq9twHaOwRqzluwu/2gEjaIuUDVDScaJH5SfOVKjDK5WD8V\n7FbN/KSL4newfsyszs/itqLePDvcLjbadWabt99A3+Jw4JZPoMppfgeqk90V\no1rB+V+2GcsmWjdG5hhrD3Ekt0ktb33GeQ0AKz3dxh5OUHcXtPU4ZMhUl4Km\noBHgpLEB8NLrz+zd+oIIW6Giq4RMuf5QUTyUyijlvIcBuSGGNU363OF61DHN\ntCA7FPv5EavINISr3aWjaZGz3WMN451J9R6+TFYz/5acEnF5uORp3+Iw7s0O\nY+Av2HqqEpbfC9TF5kRweqfBDPXfY/goL9zonx2w8WxcyhGEL/01kYda6cCc\nWUB23HKLZAEM6WjpqJzK7fm8XZ0TF12X6p8eu0AJ1YpUJNWj4N76P0UBgzCL\nuUBIv9/HQ8Dg08MpjFmf++tIcKXYWynxD4B1ws6EHa19BrhgB7rXNVN0GaDf\nD9xXy6LH7VSZC/O4NH/Dyj/C0CTa8MTdy3YQHHjt9hFZhpWf6zZU0FSjx7WV\n1MbQ\r\n=oOqt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHtW73jh5QEiODUDIyYqBeyacTuJqC7hSd/qKE4SjXCeAiEAutQ90hFCpeoJ08QRAdHDgwTArZyweVX/ZPskpZwocXU="}]},"maintainers":[{"name":"vladismus","email":"i@vlad.guru"}],"_npmUser":{"name":"vladismus","email":"i@vlad.guru"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/notificator_1.0.10_1596649509335_0.4491233740574363"},"_hasShrinkwrap":false}},"time":{"created":"2020-08-05T17:40:47.550Z","1.0.9":"2020-08-05T17:40:47.965Z","modified":"2023-11-28T10:52:57.161Z","1.0.10":"2020-08-05T17:45:09.447Z"},"maintainers":[{"email":"froncast@alt-point.ru","name":"evil_dwarf"},{"email":"i@vlad.guru","name":"vladismus"},{"email":"surrealistik74@gmail.com","name":"surrealistik"}],"description":"Adonis notification library","homepage":"https://gitlab.com/altpoint-services/adonis-packages/notificator#readme","repository":{"type":"git","url":"git+https://gitlab.com/altpoint-services/adonis-packages/notificator.git"},"author":{"name":"Vladislav O. Muschinskikh","email":"i@vlad.guru"},"bugs":{"url":"https://gitlab.com/altpoint-services/adonis-packages/notificator/issues"},"license":"MIT","readme":"Что это?\n========\n\nПакет предназначен для отправки оповещений, используя [событийно-ориентированный подход в AdonisJS](https://adonisjs.com/docs/4.1/events)\n\n# Quick start\n\n### Подготовка\n\n##### [Firebase](https://firebase.google.com)\n1. В [консоли GCP](https://console.cloud.google.com/iam-admin/serviceaccounts) создайте ключ сервисного аккаунта (при необходимости — создайте сервисный аккаунт) и скачайте его в виде JSON-файла.\nЭтот файл будет использоваться в проекте для авторизации в сервисах Google, в частности, в Firebase\n\n2. Установите ENV-переменную `SERVICE_ACCOUNT_FIREBASE`, в которой укажите путь к JSON-файлу сервисного аккаунта (из предыдущего пункта).\n\n### Настройка проекта\n1. Установите пакет\n    ```sh\n    $ adonis install @alt-point/notificator\n    ```\n2. Добавьте сервис-провайдер в файл `start/app.js`:\n    ```js\n    const providers = [\n        …\n        '@alt-point/notificator/providers/NotifyProvider',\n    ]\n    ```\n### Отправка уведомлений\n\nОтправлять оповещения можно из любого участка проекта путём вызова _событий_:\n - `notify::push` — Push-уведомление\n - `notify::sms` — SMS _(не реализовано)_\n - `notify::email` — Email-сообщение _(не реализовано)_\n\n##### PUSH\n\n###### Объект `event`\n_Событие_ является JS-объектом и имеет следующие свойства:\n - `to` — **массив**, содержащий _push-токены_ получателей\n - `payload` — Содержимое push-уведомления, соответствующий [объекту Notification](https://firebase.google.com/docs/reference/admin/node/admin.messaging.Notification)\n   - `title` — Заголовок сообщения\n   - `body` — Текст сообщения\n   - `imageUrl` — URL-изображения\n- `options` — Дополнительные параметры уведомления\n   - `priority` — строка; `normal` либо `high`\n    Подробнее о приоритетах рассказано [в документации по Firebase](https://firebase.google.com/docs/cloud-messaging/concept-options#setting-the-priority-of-a-message)\n   - `ttl` — число; срок жизни уведомления **в секундах**\n\n###### Пример\n\n```js\nconst Event = use('Event')\n\nEvent.emit('notify::push', {\n    to: [\n        'fZX8gkoESG2giOS2HufEe7:APA91bEvJ91ol20GaJlHJIZnbo1XgyXK-lgt-lmGMeR-l6k2pPttL6DKpX66MTw4aj1nW8JOLNc6UfobBcx47IXd2jkmJAaU8hg2lQ5PlX0awYtmrlAKHN5CAD7APT5bdtgi5U8k9zOf'\n    ],\n    payload: {\n        title: 'Test notification',\n        body: 'Hello, world!'\n    },\n})\n```\n\n### Продвинутое использование\n\nПомимо использования событий, также можно вызывать функцию отправки сообщений напрямую через класс Firebase:\n```js\nconst Firebase = use('AltPoint/Notify/Firebase')\n\n// Для отправки одному получателю\nFirebase.sendNotification(token, payload, options)\n    .then(console.info)\n    .catch(console.error)\n\n// Для отправки нескольким получателям\nFirebase.sendNotificationMulticast(tokens, payload, options)\n    .then(console.info)\n    .catch(console.error)\n```\n\n> **Обратите внимание!**\n> При отправке одному полчателю в качестве параметра `token` передаётся **один** push-токен (как строка), а при отправке мультикаст-сообщения нескольким получателям в качестве `tokens` передаётся **массив** строк с токенами получателей.\n> В качестве аргументов `payload` и `options` используются объекты того же формата, что используется в объекте `event` при отправке через `Event.emit()`\n\n### Супер-продвинутое использование\n\nДля более тонкой настройки отправляемых сообщений можно использовать функции `send()` и `sendMulticast()`:\n```js\nconst Firebase = use('AltPoint/Notify/Firebase')\n\nFirebase.send(message)\n    .then(console.info)\n    .catch(console.error)\n\nFirebase.sendMulticast(message)\n    .then(console.info)\n    .catch(console.error)\n```\n\nДанные функции являются обёртками для SDK-функций [send()](https://firebase.google.com/docs/reference/admin/node/admin.messaging.Messaging#send) и [sendMulticast()](https://firebase.google.com/docs/reference/admin/node/admin.messaging.Messaging#sendmulticast) соответственно.\nВ качестве аргумента `message` передаётся [объект Message](https://firebase.google.com/docs/reference/admin/node/admin.messaging#message)\n\n> **Обратите внимание!**\n> При отправке через функцию [sendMulticast()](https://firebase.google.com/docs/reference/admin/node/admin.messaging.Messaging#sendmulticast) в одном сообщении можно передать **не более 500** токенов-получателей, в то время как через `Firebase.sendNotificationMulticast()` позволяет передать неограниченное количество токенов — в этом случае массив получателей будет автоматически разделён на чанки по 500 токенов, и сообщение (при необходимости) будет разбито на несколько.\n\n### Ninja-style\n\nЕсли нужен более продвинутый функционал, то через свойство `Firebase.app` можно получить [объект App](https://firebase.google.com/docs/reference/admin/node/admin.app.App) из Firebase Admin SDK и работать с ним напрямую:\n\n```js\nconst Firebase = use('AltPoint/Notify/Firebase')\n\nFirebase.app.messaging()\n    .send(message)\n    .then(console.info)\n    .catch(console.error)\n```\n\n# TODO\n- Реализовать поддержку прочих траспортов для отправки уведомлений\n  - SMS\n  - Email\n\n# CREDITS\n\n[Vladislav O. Muschinskikh](https://t.me/VladisMus), [i@vlad.guru](mailto:i+notificator@vlad.guru)\n\n© 2020\n","readmeFilename":"README.md"}