UNPKG

@summerscar/notify

Version:
95 lines (66 loc) 2.12 kB
# @summerscar/notify A unified notification library for Node.js, supporting multiple providers with a simple API. ## Features - 🚀 **Unified API**: Send notifications via multiple channels with a single function. - 📧 **Email**: Support for SMTP services (Gmail, etc.) via `nodemailer`. - 📱 **Push Notifications**: Support for [Ntfy](https://ntfy.sh), [Gotify](https://gotify.net). - 💬 **Chat**: Support for [Telegram](https://telegram.org) Bot API. - 📦 **ESM Support**: Built as a native ES Module. - 🔒 **TypeScript**: Written in TypeScript with full type definitions. ## Installation ```bash npm install @summerscar/notify ``` ## Usage ### Unified Notification (Recommended) The easiest way to use this library is via the `notify` function. It automatically detects configured providers from environment variables or options. ```typescript import notify from "@summerscar/notify"; // Make sure to set environment variables for your providers (see Configuration below) await notify({ title: "Hello World", body: "This is a test notification from @summerscar/notify", }); ``` ### Configuration Configure providers using environment variables. You can use a `.env` file in your project root. #### Email ```bash EMAIL_SERVICE=gmail EMAIL_USER=your_email@gmail.com EMAIL_PASS=your_app_password EMAIL_TO=recipient@example.com ``` #### Ntfy ```bash NTFY_TOPIC=your_topic # Optional NTFY_TOKEN=your_access_token ``` #### Gotify ```bash GOTIFY_URL=https://gotify.example.com GOTIFY_TOKEN=your_app_token ``` #### Telegram ```bash TG_BOT_TOKEN=your_bot_token TG_CHAT_ID=your_chat_id ``` ### Individual Providers You can also use providers individually if you need more control. ```typescript import { EmailProvider, NtfyProvider } from "@summerscar/notify"; // Email const email = new EmailProvider({ service: "gmail", auth: { user: "...", pass: "..." }, to: "recipient@example.com", }); await email.send({ title: "Hi", body: "Email body" }); // Ntfy const ntfy = new NtfyProvider({ topic: "my_topic" }); await ntfy.send({ title: "Hi", body: "Ntfy body" }); ``` ## License ISC