iris-relay 1.1.3 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,17 +5,30 @@ Lightweight Telegram relay dev tool — crash alerts, deploy notifications, hear
5
5
  ## Install
6
6
 
7
7
  ```bash
8
+ # pnpm
8
9
  pnpm add iris-relay
10
+
11
+ # npm
12
+ npm install iris-relay
9
13
  ```
10
14
 
11
15
  ## Setup
12
16
 
13
- Create a `.env` file in your project root:
17
+ Run the interactive setup wizard:
18
+
19
+ ```bash
20
+ # pnpm
21
+ pnpm dlx iris-relay init
22
+
23
+ # npm
24
+ npx iris-relay init
25
+ ```
26
+
27
+ Or manually create a `.env` file:
14
28
 
15
29
  ```env
16
30
  XERO_BOT_TOKEN=your_bot_token_from_botfather
17
31
  XERO_CHAT_ID=your_telegram_chat_id
18
- XERO_DRY_RUN=false
19
32
  ```
20
33
 
21
34
  > **Bot Token** → [@BotFather](https://t.me/BotFather) · **Chat ID** → [@userinfobot](https://t.me/userinfobot)
@@ -225,20 +238,54 @@ Set `XERO_DRY_RUN=true` in `.env` to log messages to console instead of sending
225
238
 
226
239
  ---
227
240
 
241
+ ## Getting Started
242
+
243
+ ```bash
244
+ # pnpm
245
+ pnpm dlx iris-relay init
246
+
247
+ # npm
248
+ npx iris-relay init
249
+ ```
250
+
251
+ The setup wizard will:
252
+
253
+ **Step 1 — Credentials**
254
+ - Ask for your **Bot Token** (from @BotFather)
255
+ - Ask for your **Chat ID** (from @userinfobot)
256
+
257
+ **Step 2 — Features** (auto-detects your framework & package manager)
258
+ - 🛡️ Crash watcher — auto-report uncaught exceptions
259
+ - 💓 Heartbeat — periodic alive pings with custom interval
260
+ - 🔌 Express/Fastify middleware — slow request & error reporting (only if detected)
261
+ - 🧪 Dry run mode — log to console instead of sending
262
+
263
+ **Step 3 — Scaffolding**
264
+ - 📄 Generates `iris.ts` or `iris.js` starter file with selected features pre-wired
265
+ - 🚀 GitHub Actions deploy notification workflow
266
+ - 🐳 Docker Compose env var setup
267
+
268
+ **Then** → writes `.env`, updates `.gitignore`, sends a test message ✅
269
+
270
+ ---
271
+
228
272
  ## CLI
229
273
 
230
274
  ```bash
275
+ # Interactive setup
276
+ pnpm dlx iris-relay init # or: npx iris-relay init
277
+
231
278
  # Send a message
232
- npx iris-relay "Deploy complete ✅"
279
+ pnpm dlx iris-relay "Deploy complete ✅" # or: npx iris-relay "..."
233
280
 
234
281
  # Send with HTML
235
- npx iris-relay --html "<b>Bold</b> message"
282
+ pnpm dlx iris-relay --html "<b>Bold</b> message"
236
283
 
237
284
  # Send a file
238
- npx iris-relay --file ./logs/error.log "Error log attached"
285
+ pnpm dlx iris-relay --file ./logs/error.log "Error log attached"
239
286
 
240
287
  # Silent (no notification sound)
241
- npx iris-relay --silent "Background update"
288
+ pnpm dlx iris-relay --silent "Background update"
242
289
  ```
243
290
 
244
291
  ---
package/dist/cli.js CHANGED
@@ -2,20 +2,21 @@
2
2
  import { config } from "dotenv";
3
3
  import { relay } from "./relay.js";
4
4
  import { relayFile } from "./file.js";
5
- config();
5
+ import { createInterface } from "node:readline/promises";
6
+ import { writeFileSync, existsSync, readFileSync, mkdirSync } from "node:fs";
7
+ import { join } from "node:path";
8
+ config({ quiet: true });
6
9
  const args = process.argv.slice(2);
7
10
  function printHelp() {
8
11
  console.log(`
9
- iris-relay — Send messages to Telegram from the CLI
12
+ iris-relay — Telegram message relay for developers
10
13
 
11
- Usage:
12
- iris-relay "Your message here"
13
- iris-relay --file ./path/to/file.log "Optional caption"
14
- iris-relay --silent "No notification sound"
15
- iris-relay --html "<b>Bold</b> message"
14
+ Commands:
15
+ iris-relay init Interactive setup wizard
16
+ iris-relay "message" Send a text message
17
+ iris-relay --file <path> Send a file
16
18
 
17
19
  Options:
18
- --file <path> Send a file instead of a text message
19
20
  --silent Send without notification sound
20
21
  --html Parse message as HTML
21
22
  --markdown Parse message as Markdown
@@ -24,9 +25,289 @@ Options:
24
25
  Environment:
25
26
  XERO_BOT_TOKEN Your Telegram bot token
26
27
  XERO_CHAT_ID Your Telegram chat ID
28
+ XERO_DRY_RUN Set to "true" to log instead of send
27
29
  `);
28
30
  }
31
+ // ─── Helpers ─────────────────────────────────────────────────
32
+ function yn(answer) {
33
+ return answer.toLowerCase() === "y" || answer.toLowerCase() === "yes";
34
+ }
35
+ function detectPackageManager() {
36
+ if (existsSync(join(process.cwd(), "pnpm-lock.yaml")))
37
+ return "pnpm";
38
+ if (existsSync(join(process.cwd(), "yarn.lock")))
39
+ return "yarn";
40
+ if (existsSync(join(process.cwd(), "bun.lockb")))
41
+ return "bun";
42
+ return "npm";
43
+ }
44
+ function detectFramework() {
45
+ const pkgPath = join(process.cwd(), "package.json");
46
+ if (!existsSync(pkgPath))
47
+ return null;
48
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
49
+ const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
50
+ if (allDeps["next"])
51
+ return "next";
52
+ if (allDeps["express"])
53
+ return "express";
54
+ if (allDeps["fastify"])
55
+ return "fastify";
56
+ if (allDeps["hono"])
57
+ return "hono";
58
+ if (allDeps["koa"])
59
+ return "koa";
60
+ return null;
61
+ }
62
+ // ─── Interactive Setup ───────────────────────────────────────
63
+ async function runInit() {
64
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
65
+ const pm = detectPackageManager();
66
+ const framework = detectFramework();
67
+ console.log(`
68
+ ╔══════════════════════════════════════════╗
69
+ ║ 🛰️ iris-relay setup wizard ║
70
+ ╚══════════════════════════════════════════╝
71
+ `);
72
+ if (framework)
73
+ console.log(` Detected: ${framework} project (${pm})\n`);
74
+ // ── Step 1: Credentials ──────────────────────
75
+ console.log("Step 1 — Telegram Credentials\n");
76
+ console.log(" Get bot token → https://t.me/BotFather");
77
+ console.log(" Get chat ID → https://t.me/userinfobot\n");
78
+ const botToken = (await rl.question(" XERO_BOT_TOKEN: ")).trim();
79
+ if (!botToken) {
80
+ console.error("\n❌ Bot token is required.");
81
+ rl.close();
82
+ process.exit(1);
83
+ }
84
+ const chatId = (await rl.question(" XERO_CHAT_ID: ")).trim();
85
+ if (!chatId) {
86
+ console.error("\n❌ Chat ID is required.");
87
+ rl.close();
88
+ process.exit(1);
89
+ }
90
+ // ── Step 2: Features ─────────────────────────
91
+ console.log("\nStep 2 — Features to enable\n");
92
+ const enableCrashWatch = yn(await rl.question(" 🛡️ Auto-report crashes to Telegram? (Y/n): ") || "y");
93
+ const enableHeartbeat = yn(await rl.question(" 💓 Send periodic heartbeat pings? (y/N): "));
94
+ let heartbeatInterval = 60;
95
+ let appName = "";
96
+ if (enableHeartbeat) {
97
+ appName = (await rl.question(" App name (for heartbeat label): ")).trim() || "My App";
98
+ const intervalStr = (await rl.question(" Interval in seconds (default: 60): ")).trim();
99
+ heartbeatInterval = parseInt(intervalStr) || 60;
100
+ }
101
+ const enableMiddleware = framework === "express" || framework === "fastify" || framework === "koa"
102
+ ? yn(await rl.question(` 🔌 Add ${framework} error/slow-request middleware? (Y/n): `) || "y")
103
+ : false;
104
+ const enableDryRun = yn(await rl.question(" 🧪 Enable dry run mode for now? (y/N): "));
105
+ // ── Step 3: Scaffolding ──────────────────────
106
+ console.log("\nStep 3 — Project scaffolding\n");
107
+ const generateStarter = yn(await rl.question(" 📄 Generate a starter file (iris.ts / iris.js)? (Y/n): ") || "y");
108
+ const generateCI = yn(await rl.question(" 🚀 Generate GitHub Actions deploy notification? (y/N): "));
109
+ const generateDocker = yn(await rl.question(" 🐳 Add XERO_ env vars to docker-compose.yml? (y/N): "));
110
+ rl.close();
111
+ // ── Write .env ───────────────────────────────
112
+ console.log("\n── Writing files ──\n");
113
+ const envPath = join(process.cwd(), ".env");
114
+ let envContent = "";
115
+ if (existsSync(envPath)) {
116
+ const existing = readFileSync(envPath, "utf-8");
117
+ envContent = existing
118
+ .split("\n")
119
+ .filter((line) => !line.startsWith("XERO_BOT_TOKEN=") &&
120
+ !line.startsWith("XERO_CHAT_ID=") &&
121
+ !line.startsWith("XERO_DRY_RUN="))
122
+ .join("\n")
123
+ .trimEnd();
124
+ if (envContent)
125
+ envContent += "\n\n";
126
+ }
127
+ envContent += `# iris-relay config\n`;
128
+ envContent += `XERO_BOT_TOKEN=${botToken}\n`;
129
+ envContent += `XERO_CHAT_ID=${chatId}\n`;
130
+ if (enableDryRun) {
131
+ envContent += `XERO_DRY_RUN=true\n`;
132
+ }
133
+ writeFileSync(envPath, envContent);
134
+ console.log(`✅ .env → ${envPath}`);
135
+ // ── .gitignore ───────────────────────────────
136
+ const gitignorePath = join(process.cwd(), ".gitignore");
137
+ if (existsSync(gitignorePath)) {
138
+ const gitignore = readFileSync(gitignorePath, "utf-8");
139
+ if (!gitignore.includes(".env")) {
140
+ writeFileSync(gitignorePath, gitignore.trimEnd() + "\n.env\n");
141
+ console.log("✅ .env added to .gitignore");
142
+ }
143
+ }
144
+ else {
145
+ writeFileSync(gitignorePath, "node_modules\n.env\n");
146
+ console.log("✅ .gitignore created");
147
+ }
148
+ // ── Starter file ─────────────────────────────
149
+ if (generateStarter) {
150
+ const isTS = existsSync(join(process.cwd(), "tsconfig.json"));
151
+ const ext = isTS ? "ts" : "js";
152
+ const starterPath = join(process.cwd(), `iris.${ext}`);
153
+ let starter = "";
154
+ if (isTS) {
155
+ starter += `import { relay, relayError, relayDeploy } from "iris-relay";\n`;
156
+ }
157
+ else {
158
+ starter += `const { relay, relayError, relayDeploy } = require("iris-relay");\n`;
159
+ }
160
+ starter += `\n`;
161
+ if (enableCrashWatch) {
162
+ if (isTS) {
163
+ starter += `import { watchProcess } from "iris-relay";\n`;
164
+ }
165
+ else {
166
+ starter += `const { watchProcess } = require("iris-relay");\n`;
167
+ }
168
+ starter += `\n// Auto-report uncaught exceptions & unhandled rejections\n`;
169
+ starter += `watchProcess();\n\n`;
170
+ }
171
+ if (enableHeartbeat) {
172
+ if (isTS) {
173
+ starter += `import { startHeartbeat } from "iris-relay";\n`;
174
+ }
175
+ else {
176
+ starter += `const { startHeartbeat } = require("iris-relay");\n`;
177
+ }
178
+ starter += `\n// Send periodic heartbeat (every ${heartbeatInterval}s)\n`;
179
+ starter += `const stopHeartbeat = startHeartbeat({\n`;
180
+ starter += ` interval: ${heartbeatInterval * 1000},\n`;
181
+ starter += ` app: "${appName}",\n`;
182
+ starter += `});\n\n`;
183
+ }
184
+ if (enableMiddleware && framework === "express") {
185
+ if (isTS) {
186
+ starter += `import { irisMiddleware, irisErrorHandler } from "iris-relay";\n`;
187
+ }
188
+ else {
189
+ starter += `const { irisMiddleware, irisErrorHandler } = require("iris-relay");\n`;
190
+ }
191
+ starter += `\n// Add to your Express app:\n`;
192
+ starter += `// app.use(irisMiddleware({ slowThreshold: 3000 }));\n`;
193
+ starter += `// app.use(irisErrorHandler()); // after all routes\n\n`;
194
+ }
195
+ starter += `// ── Examples ──\n\n`;
196
+ starter += `// Send a message\n`;
197
+ starter += `// await relay("Server started 🚀");\n\n`;
198
+ starter += `// Report an error\n`;
199
+ starter += `// try { ... } catch (err) { await relayError(err); }\n\n`;
200
+ starter += `// Deploy notification (auto-reads git info)\n`;
201
+ starter += `// await relayDeploy({ app: "${appName || "my-app"}", env: "production" });\n`;
202
+ writeFileSync(starterPath, starter);
203
+ console.log(`✅ iris.${ext} → ${starterPath}`);
204
+ }
205
+ // ── GitHub Actions ───────────────────────────
206
+ if (generateCI) {
207
+ const workflowDir = join(process.cwd(), ".github", "workflows");
208
+ const workflowPath = join(workflowDir, "iris-notify.yml");
209
+ const workflowContent = `# iris-relay deploy notification
210
+ # Add XERO_BOT_TOKEN and XERO_CHAT_ID as repository secrets
211
+
212
+ name: Deploy Notification
213
+
214
+ on:
215
+ push:
216
+ branches: [main]
217
+
218
+ jobs:
219
+ notify:
220
+ runs-on: ubuntu-latest
221
+ steps:
222
+ - uses: actions/checkout@v4
223
+
224
+ - uses: actions/setup-node@v4
225
+ with:
226
+ node-version: "20"
227
+
228
+ - run: ${pm} install iris-relay
229
+
230
+ - name: Send deploy notification
231
+ env:
232
+ XERO_BOT_TOKEN: \${{ secrets.XERO_BOT_TOKEN }}
233
+ XERO_CHAT_ID: \${{ secrets.XERO_CHAT_ID }}
234
+ run: npx iris-relay "🚀 Deployed \${{ github.repository }}@\${{ github.sha }}"
235
+ `;
236
+ mkdirSync(workflowDir, { recursive: true });
237
+ writeFileSync(workflowPath, workflowContent);
238
+ console.log(`✅ GitHub Actions → ${workflowPath}`);
239
+ console.log(" ⚠️ Add XERO_BOT_TOKEN and XERO_CHAT_ID as repo secrets!");
240
+ }
241
+ // ── Docker Compose ───────────────────────────
242
+ if (generateDocker) {
243
+ const composePath = join(process.cwd(), "docker-compose.yml");
244
+ if (existsSync(composePath)) {
245
+ const existing = readFileSync(composePath, "utf-8");
246
+ if (!existing.includes("XERO_BOT_TOKEN")) {
247
+ const envBlock = `\n # iris-relay\n environment:\n - XERO_BOT_TOKEN=\${XERO_BOT_TOKEN}\n - XERO_CHAT_ID=\${XERO_CHAT_ID}\n`;
248
+ console.log(`\n📋 Add this to your service in docker-compose.yml:\n${envBlock}`);
249
+ }
250
+ }
251
+ else {
252
+ const composeContent = `version: "3.8"
253
+
254
+ services:
255
+ app:
256
+ build: .
257
+ env_file:
258
+ - .env
259
+ environment:
260
+ - XERO_BOT_TOKEN=\${XERO_BOT_TOKEN}
261
+ - XERO_CHAT_ID=\${XERO_CHAT_ID}
262
+ `;
263
+ writeFileSync(composePath, composeContent);
264
+ console.log(`✅ docker-compose.yml → ${composePath}`);
265
+ }
266
+ }
267
+ // ── Test connection ──────────────────────────
268
+ console.log("\n🧪 Testing connection...");
269
+ process.env.XERO_BOT_TOKEN = botToken;
270
+ process.env.XERO_CHAT_ID = chatId;
271
+ const result = await relay("✅ iris-relay connected successfully!");
272
+ if (result.success) {
273
+ console.log("✅ Test message sent! Check your Telegram.");
274
+ }
275
+ else {
276
+ console.error(`⚠️ Test failed: ${result.error}`);
277
+ console.log(" .env was still saved — double-check your token and chat ID.");
278
+ }
279
+ // ── Summary ──────────────────────────────────
280
+ const features = [];
281
+ if (enableCrashWatch)
282
+ features.push("crash watcher");
283
+ if (enableHeartbeat)
284
+ features.push(`heartbeat (${heartbeatInterval}s)`);
285
+ if (enableMiddleware)
286
+ features.push(`${framework} middleware`);
287
+ if (enableDryRun)
288
+ features.push("dry run mode");
289
+ console.log(`
290
+ ╔══════════════════════════════════════════╗
291
+ ║ 🎉 Setup complete! ║
292
+ ╚══════════════════════════════════════════╝
293
+
294
+ Features: ${features.length > 0 ? features.join(", ") : "core only"}
295
+
296
+ Quick start:
297
+ import { relay } from "iris-relay";
298
+ await relay("Hello from my server! 🚀");
299
+
300
+ CLI:
301
+ npx iris-relay "Quick message"
302
+ `);
303
+ }
304
+ // ─── Message / File Sending ──────────────────────────────────
29
305
  async function main() {
306
+ const command = args[0];
307
+ if (command === "init") {
308
+ await runInit();
309
+ return;
310
+ }
30
311
  if (args.length === 0 || args.includes("--help") || args.includes("-h")) {
31
312
  printHelp();
32
313
  process.exit(0);
@@ -35,12 +316,10 @@ async function main() {
35
316
  const html = args.includes("--html");
36
317
  const markdown = args.includes("--markdown");
37
318
  const fileIdx = args.indexOf("--file");
38
- // Filter out flags to get the message
39
319
  const messageArgs = args.filter((a, i) => !a.startsWith("--") && !(i === fileIdx + 1 && fileIdx >= 0));
40
320
  const message = messageArgs.join(" ");
41
321
  const parseMode = html ? "HTML" : markdown ? "Markdown" : undefined;
42
322
  try {
43
- // File mode
44
323
  if (fileIdx >= 0) {
45
324
  const filePath = args[fileIdx + 1];
46
325
  if (!filePath) {
@@ -60,7 +339,6 @@ async function main() {
60
339
  }
61
340
  return;
62
341
  }
63
- // Message mode
64
342
  if (!message) {
65
343
  console.error("Error: No message provided");
66
344
  printHelp();
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iris-relay",
3
- "version": "1.1.3",
3
+ "version": "1.2.0",
4
4
  "description": "Lightweight Telegram message relay — dev tool for notifications, crash alerts, deploy pings, and more",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",