library.dr-conversion 0.1.1 → 0.1.3
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 +292 -11
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +24 -0
- package/dist/client.js.map +1 -1
- package/dist/types/platform.d.ts +1 -0
- package/dist/types/platform.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +2 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +13 -0
- package/dist/utils/logger.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
# Library@DR-
|
|
1
|
+
# Library@DR-Conversion
|
|
2
2
|
|
|
3
3
|
> Unified interface for building multi-platform chat bots
|
|
4
4
|
|
|
5
|
-
[](https://www.npmjs.com/package/library.dr-conversion)
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
7
7
|
|
|
8
|
-
**Library.DR-Conversion** (v0.1.
|
|
8
|
+
**Library.DR-Conversion** (v0.1.3) is a TypeScript library that provides a unified, platform-agnostic interface for building chat bots that work across multiple platforms like Discord, Root, and potentially others. Write your bot logic once, and deploy it anywhere!
|
|
9
9
|
|
|
10
10
|
## ✨ Features
|
|
11
11
|
|
|
12
12
|
- 🌉 **Unified Interface**: Single API that works across all supported platforms
|
|
13
13
|
- 🔒 **Type-Safe**: Full TypeScript support with strict typing
|
|
14
14
|
- 🎯 **Platform-Agnostic**: Write platform-independent bot code
|
|
15
|
+
- 🔄 **Bidirectional Conversion**: Convert bots between platforms (Discord ↔ Root) with the same codebase
|
|
16
|
+
- 🛡️ **Production-Ready**: Auto-detects production environments and adjusts logging for security
|
|
15
17
|
- 🔌 **Extensible**: Easy to add new platform providers
|
|
16
18
|
- 🎨 **Rich Content**: Support for embeds, buttons, reactions, and more
|
|
17
19
|
- ⚡ **Modern**: Built with async/await and ES2020+
|
|
@@ -30,13 +32,13 @@
|
|
|
30
32
|
### Installation
|
|
31
33
|
|
|
32
34
|
```bash
|
|
33
|
-
npm install
|
|
35
|
+
npm install library.dr-conversion
|
|
34
36
|
```
|
|
35
37
|
|
|
36
38
|
### Basic Usage
|
|
37
39
|
|
|
38
40
|
```typescript
|
|
39
|
-
import { UnifiedClient } from '
|
|
41
|
+
import { UnifiedClient } from 'library.dr-conversion';
|
|
40
42
|
|
|
41
43
|
// Create a client (works with any platform!)
|
|
42
44
|
const client = new UnifiedClient({
|
|
@@ -57,9 +59,9 @@ client.on('message', async (message) => {
|
|
|
57
59
|
await client.connect();
|
|
58
60
|
```
|
|
59
61
|
|
|
60
|
-
### Switching Platforms
|
|
62
|
+
### Switching Platforms (Bidirectional Conversion)
|
|
61
63
|
|
|
62
|
-
The beauty of Library.DR-Conversion is that
|
|
64
|
+
The beauty of Library.DR-Conversion is that you can convert your bot between platforms **in both directions** - just change one line! Your bot logic remains the same whether you're moving from Discord to Root, Root to Discord, or to any other supported platform.
|
|
63
65
|
|
|
64
66
|
```typescript
|
|
65
67
|
// Discord bot
|
|
@@ -68,13 +70,292 @@ const client = new UnifiedClient({
|
|
|
68
70
|
config: { token: process.env.DISCORD_TOKEN }
|
|
69
71
|
});
|
|
70
72
|
|
|
71
|
-
//
|
|
73
|
+
// Same bot on Root - just change the platform!
|
|
72
74
|
const client = new UnifiedClient({
|
|
73
75
|
platform: 'root',
|
|
74
76
|
config: { token: process.env.ROOT_TOKEN }
|
|
75
77
|
});
|
|
76
78
|
```
|
|
77
79
|
|
|
80
|
+
**No code rewriting needed!** All your message handlers, commands, and bot logic work on both platforms:
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
// This code works on Discord, Root, or any supported platform
|
|
84
|
+
client.on('message', async (message) => {
|
|
85
|
+
if (message.content === '!hello') {
|
|
86
|
+
await message.reply('Hello from any platform!');
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (message.content === '!info') {
|
|
90
|
+
await client.sendMessage(message.channel.id, {
|
|
91
|
+
embeds: [{
|
|
92
|
+
title: 'Bot Info',
|
|
93
|
+
description: `Running on ${client.platformName}`,
|
|
94
|
+
color: '#00ff00'
|
|
95
|
+
}]
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 🔄 Multi-Instance Usage (Root Communities)
|
|
102
|
+
|
|
103
|
+
**Important for Root developers:** Root's architecture spins up separate server-side instances for each community. The library mirrors this design - each `UnifiedClient` connects to **one Root community**.
|
|
104
|
+
|
|
105
|
+
To manage multiple Root communities, create multiple client instances:
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
// Bot connected to multiple Root communities
|
|
109
|
+
const community1Bot = new UnifiedClient({
|
|
110
|
+
platform: 'root',
|
|
111
|
+
config: {
|
|
112
|
+
token: process.env.ROOT_TOKEN,
|
|
113
|
+
communityId: 'community-1-id'
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
const community2Bot = new UnifiedClient({
|
|
118
|
+
platform: 'root',
|
|
119
|
+
config: {
|
|
120
|
+
token: process.env.ROOT_TOKEN,
|
|
121
|
+
communityId: 'community-2-id'
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
// Each instance operates independently
|
|
126
|
+
community1Bot.on('message', (msg) => {
|
|
127
|
+
console.log('Message from Community 1');
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
community2Bot.on('message', (msg) => {
|
|
131
|
+
console.log('Message from Community 2');
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
await community1Bot.connect();
|
|
135
|
+
await community2Bot.connect();
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
This pattern also works for running the same bot across **different platforms simultaneously**:
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
const discordBot = new UnifiedClient({ platform: 'discord', config: { token: DISCORD_TOKEN } });
|
|
142
|
+
const rootBot = new UnifiedClient({ platform: 'root', config: { token: ROOT_TOKEN } });
|
|
143
|
+
|
|
144
|
+
// Same message handler shared across both platforms
|
|
145
|
+
const handleMessage = async (message) => {
|
|
146
|
+
if (message.content === '!ping') {
|
|
147
|
+
await message.reply('Pong!');
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
discordBot.on('message', handleMessage);
|
|
152
|
+
rootBot.on('message', handleMessage);
|
|
153
|
+
|
|
154
|
+
await discordBot.connect();
|
|
155
|
+
await rootBot.connect();
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### ⚠️ Deployment Considerations for Root Apps
|
|
159
|
+
|
|
160
|
+
**Important:** When deploying an app to Root's infrastructure, Root clones your server-side code and runs one instance per community. Be mindful of which platforms your code connects to:
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
// ❌ DON'T: This would start BOTH Root and Discord bots when installed to Root
|
|
164
|
+
const rootBot = new UnifiedClient({ platform: 'root', config: { token: ROOT_TOKEN } });
|
|
165
|
+
const discordBot = new UnifiedClient({ platform: 'discord', config: { token: DISCORD_TOKEN } });
|
|
166
|
+
await rootBot.connect();
|
|
167
|
+
await discordBot.connect(); // Discord bot spins up for every Root community!
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
#### Built-in Safety: Environment Variable Control 🛡️
|
|
171
|
+
|
|
172
|
+
**Two ways to control bot startup:**
|
|
173
|
+
|
|
174
|
+
**1. Explicit Disable** (works always, no config needed):
|
|
175
|
+
```bash
|
|
176
|
+
ALLOW_DISCORD_BOT=false # Blocks Discord bot startup
|
|
177
|
+
ALLOW_ROOT_BOT=false # Blocks Root bot startup
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
**2. Require Explicit Enable** with `preventAutoStart: true`:
|
|
181
|
+
|
|
182
|
+
```typescript
|
|
183
|
+
// Requires explicit permission to start
|
|
184
|
+
const discordBot = new UnifiedClient({
|
|
185
|
+
platform: 'discord',
|
|
186
|
+
config: {
|
|
187
|
+
token: DISCORD_TOKEN,
|
|
188
|
+
preventAutoStart: true // Requires ALLOW_DISCORD_BOT=true
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
const rootBot = new UnifiedClient({
|
|
193
|
+
platform: 'root',
|
|
194
|
+
config: {
|
|
195
|
+
token: ROOT_TOKEN,
|
|
196
|
+
preventAutoStart: true // Requires ALLOW_ROOT_BOT=true
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
// Only bots with their ALLOW_{PLATFORM}_BOT=true will start
|
|
201
|
+
await discordBot.connect(); // Blocked unless ALLOW_DISCORD_BOT=true
|
|
202
|
+
await rootBot.connect(); // Blocked unless ALLOW_ROOT_BOT=true
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**How it works:**
|
|
206
|
+
- `ALLOW_*_BOT=false` → ❌ **Always blocks** (even without `preventAutoStart`)
|
|
207
|
+
- `ALLOW_*_BOT=true` → ✅ **Always allows**
|
|
208
|
+
- `preventAutoStart: true` + env var not set → ❌ **Blocked** (requires explicit `=true`)
|
|
209
|
+
- `preventAutoStart: false` (or not set) + env var not set → ✅ **Allowed** (default behavior)
|
|
210
|
+
|
|
211
|
+
**Use case examples:**
|
|
212
|
+
|
|
213
|
+
**Scenario 1 (Simple):** Deploy to **Root**, disable Discord bot with env var only:
|
|
214
|
+
|
|
215
|
+
```typescript
|
|
216
|
+
// bot.ts - No preventAutoStart needed!
|
|
217
|
+
const discordBot = new UnifiedClient({
|
|
218
|
+
platform: 'discord',
|
|
219
|
+
config: { token: process.env.DISCORD_TOKEN }
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
const rootBot = new UnifiedClient({
|
|
223
|
+
platform: 'root',
|
|
224
|
+
config: { token: process.env.ROOT_TOKEN }
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
await discordBot.connect(); // Checks ALLOW_DISCORD_BOT
|
|
228
|
+
await rootBot.connect(); // Checks ALLOW_ROOT_BOT
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
# .env file for Root deployment
|
|
233
|
+
ALLOW_DISCORD_BOT=false # ❌ Discord bot blocked
|
|
234
|
+
ROOT_TOKEN=your-root-token
|
|
235
|
+
DISCORD_TOKEN=your-discord-token
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
**Scenario 2 (Secure):** Use `preventAutoStart` to require explicit opt-in:
|
|
239
|
+
|
|
240
|
+
```typescript
|
|
241
|
+
// Requires explicit permission
|
|
242
|
+
const discordBot = new UnifiedClient({
|
|
243
|
+
platform: 'discord',
|
|
244
|
+
config: {
|
|
245
|
+
token: process.env.DISCORD_TOKEN,
|
|
246
|
+
preventAutoStart: true // Requires ALLOW_DISCORD_BOT=true
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
const rootBot = new UnifiedClient({
|
|
251
|
+
platform: 'root',
|
|
252
|
+
config: {
|
|
253
|
+
token: process.env.ROOT_TOKEN,
|
|
254
|
+
preventAutoStart: true // Requires ALLOW_ROOT_BOT=true
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
await discordBot.connect();
|
|
259
|
+
await rootBot.connect();
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# Root deployment - must explicitly enable
|
|
264
|
+
ALLOW_ROOT_BOT=true # ✅ Root bot will start
|
|
265
|
+
# ALLOW_DISCORD_BOT not set # ❌ Discord bot blocked (preventAutoStart requires =true)
|
|
266
|
+
ROOT_TOKEN=your-root-token
|
|
267
|
+
DISCORD_TOKEN=your-discord-token
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
**Scenario 3:** Standalone Discord bot server:
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
# Option A: Explicit disable
|
|
274
|
+
ALLOW_DISCORD_BOT=true # ✅ Discord bot will start
|
|
275
|
+
ALLOW_ROOT_BOT=false # ❌ Root bot explicitly blocked
|
|
276
|
+
DISCORD_TOKEN=your-discord-token
|
|
277
|
+
ROOT_TOKEN=your-root-token
|
|
278
|
+
|
|
279
|
+
# Option B: Just don't set it (if using preventAutoStart)
|
|
280
|
+
ALLOW_DISCORD_BOT=true # ✅ Discord bot will start
|
|
281
|
+
# ALLOW_ROOT_BOT not set # ❌ Root bot blocked (if preventAutoStart=true)
|
|
282
|
+
DISCORD_TOKEN=your-discord-token
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
**Result:** Control bot startup purely via environment variables - no code changes needed!
|
|
286
|
+
|
|
287
|
+
#### Alternative: Environment Variable Control
|
|
288
|
+
|
|
289
|
+
**Best practice:** Use environment variables to conditionally activate platforms:
|
|
290
|
+
|
|
291
|
+
```typescript
|
|
292
|
+
// ✅ Control which platforms to activate
|
|
293
|
+
if (process.env.PLATFORM === 'root') {
|
|
294
|
+
const bot = new UnifiedClient({ platform: 'root', config: { token: process.env.ROOT_TOKEN } });
|
|
295
|
+
await bot.connect();
|
|
296
|
+
} else if (process.env.PLATFORM === 'discord') {
|
|
297
|
+
const bot = new UnifiedClient({ platform: 'discord', config: { token: process.env.DISCORD_TOKEN } });
|
|
298
|
+
await bot.connect();
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Or use a hybrid approach for **intentional** cross-platform bots:
|
|
303
|
+
|
|
304
|
+
```typescript
|
|
305
|
+
// ✅ Explicitly bridge Root and Discord with safety guards
|
|
306
|
+
const platforms = process.env.PLATFORMS?.split(',') || ['root'];
|
|
307
|
+
|
|
308
|
+
for (const platform of platforms) {
|
|
309
|
+
const bot = new UnifiedClient({
|
|
310
|
+
platform,
|
|
311
|
+
config: {
|
|
312
|
+
token: process.env[`${platform.toUpperCase()}_TOKEN`],
|
|
313
|
+
preventAutoStart: true // Requires ALLOW_{PLATFORM}_BOT=true
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
await bot.connect();
|
|
317
|
+
}
|
|
318
|
+
// Set PLATFORMS='root' and ALLOW_ROOT_BOT=true for Root-only
|
|
319
|
+
// Set PLATFORMS='root,discord', ALLOW_ROOT_BOT=true, ALLOW_DISCORD_BOT=true for cross-platform
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
**Rule of thumb:** Use `preventAutoStart: true` to prevent accidental multi-platform startup when deploying to Root.
|
|
323
|
+
|
|
324
|
+
### 🔇 Production Logging
|
|
325
|
+
|
|
326
|
+
**Automatic:** The library detects production environments and automatically reduces logging verbosity to `WARN` level (only warnings and errors).
|
|
327
|
+
|
|
328
|
+
Production is detected when `NODE_ENV` is set to `production` or `prod`:
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
# Production deployment - automatic WARN level logging
|
|
332
|
+
NODE_ENV=production
|
|
333
|
+
ALLOW_ROOT_BOT=true
|
|
334
|
+
ROOT_TOKEN=your-token
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
**Manual control:** Override the automatic detection by setting `logLevel` explicitly:
|
|
338
|
+
|
|
339
|
+
```typescript
|
|
340
|
+
import { UnifiedClient, LogLevel } from 'library.dr-conversion';
|
|
341
|
+
|
|
342
|
+
// Force specific log level regardless of environment
|
|
343
|
+
const client = new UnifiedClient({
|
|
344
|
+
platform: 'discord',
|
|
345
|
+
config: { token: process.env.DISCORD_TOKEN },
|
|
346
|
+
logLevel: LogLevel.ERROR // Only log errors
|
|
347
|
+
});
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
**Available log levels:**
|
|
351
|
+
- `LogLevel.DEBUG` - All messages (verbose)
|
|
352
|
+
- `LogLevel.INFO` - Info, warnings, and errors (default in development)
|
|
353
|
+
- `LogLevel.WARN` - Warnings and errors only (default in production)
|
|
354
|
+
- `LogLevel.ERROR` - Errors only
|
|
355
|
+
- `LogLevel.NONE` - No logging
|
|
356
|
+
|
|
357
|
+
**Security note:** Debug and Info logs may contain sensitive information (tokens, user IDs, message content). Production mode automatically prevents this by limiting logs to warnings and errors. This is especially important for Discord bots to comply with Discord's data privacy guidelines.
|
|
358
|
+
|
|
78
359
|
## 📖 Documentation
|
|
79
360
|
|
|
80
361
|
### Creating Rich Messages
|
|
@@ -249,7 +530,7 @@ Library.DR-Conversion/
|
|
|
249
530
|
### Custom Logging
|
|
250
531
|
|
|
251
532
|
```typescript
|
|
252
|
-
import { UnifiedClient, LogLevel } from '
|
|
533
|
+
import { UnifiedClient, LogLevel } from 'library.dr-conversion';
|
|
253
534
|
|
|
254
535
|
const client = new UnifiedClient({
|
|
255
536
|
platform: 'discord',
|
|
@@ -266,7 +547,7 @@ client.setLogLevel(LogLevel.INFO);
|
|
|
266
547
|
While the goal is platform-agnostic code, sometimes you need platform-specific features:
|
|
267
548
|
|
|
268
549
|
```typescript
|
|
269
|
-
import { DiscordProvider } from '
|
|
550
|
+
import { DiscordProvider } from 'library.dr-conversion';
|
|
270
551
|
|
|
271
552
|
const client = new UnifiedClient({
|
|
272
553
|
platform: 'discord',
|
|
@@ -292,7 +573,7 @@ import {
|
|
|
292
573
|
UnsupportedPlatformError,
|
|
293
574
|
AuthenticationError,
|
|
294
575
|
ResourceNotFoundError
|
|
295
|
-
} from '
|
|
576
|
+
} from 'library.dr-conversion';
|
|
296
577
|
|
|
297
578
|
client.on('message', async (message) => {
|
|
298
579
|
try {
|
package/dist/client.d.ts
CHANGED
|
@@ -11,11 +11,14 @@ export interface UnifiedClientConfig {
|
|
|
11
11
|
export declare class UnifiedClient extends EventEmitter {
|
|
12
12
|
private provider;
|
|
13
13
|
private logger;
|
|
14
|
+
private platform;
|
|
15
|
+
private config;
|
|
14
16
|
constructor(options: UnifiedClientConfig);
|
|
15
17
|
private createProvider;
|
|
16
18
|
private setupEventForwarding;
|
|
17
19
|
connect(): Promise<void>;
|
|
18
20
|
disconnect(): Promise<void>;
|
|
21
|
+
private checkStartupPermission;
|
|
19
22
|
get isConnected(): boolean;
|
|
20
23
|
sendMessage(channelId: string, options: string | MessageOptions): Promise<Message>;
|
|
21
24
|
editMessage(messageId: string, channelId: string, content: string): Promise<Message>;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,OAAO,EACP,IAAI,EACJ,OAAO,EACP,KAAK,EACL,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAqB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK7D,MAAM,WAAW,mBAAmB;IAElC,QAAQ,EAAE,YAAY,CAAC;IAGvB,MAAM,EAAE,aAAa,GAAG,UAAU,CAAC;IAGnC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAuBD,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,MAAM,CAAS;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,OAAO,EACP,IAAI,EACJ,OAAO,EACP,KAAK,EACL,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAqB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK7D,MAAM,WAAW,mBAAmB;IAElC,QAAQ,EAAE,YAAY,CAAC;IAGvB,MAAM,EAAE,aAAa,GAAG,UAAU,CAAC;IAGnC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAuBD,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,MAAM,CAA6B;gBAE/B,OAAO,EAAE,mBAAmB;IAuBxC,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,oBAAoB;IAkCtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAYxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC,OAAO,CAAC,sBAAsB;IA8B9B,IAAI,WAAW,IAAI,OAAO,CAEzB;IA0BK,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAWlF,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASpF,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlE,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAStC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS/C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAS/C,IAAI,YAAY,IAAI,MAAM,CAEzB;IAKD,IAAI,eAAe,IAAI,MAAM,CAE5B;IAMD,WAAW,IAAI,gBAAgB;IAQ/B,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;CAGnC"}
|
package/dist/client.js
CHANGED
|
@@ -9,6 +9,8 @@ const logger_1 = require("./utils/logger");
|
|
|
9
9
|
class UnifiedClient extends events_1.EventEmitter {
|
|
10
10
|
constructor(options) {
|
|
11
11
|
super();
|
|
12
|
+
this.platform = options.platform;
|
|
13
|
+
this.config = options.config;
|
|
12
14
|
this.logger = (0, logger_1.getLogger)();
|
|
13
15
|
if (options.logLevel !== undefined) {
|
|
14
16
|
this.logger.setLevel(options.logLevel);
|
|
@@ -54,6 +56,7 @@ class UnifiedClient extends events_1.EventEmitter {
|
|
|
54
56
|
});
|
|
55
57
|
}
|
|
56
58
|
async connect() {
|
|
59
|
+
this.checkStartupPermission();
|
|
57
60
|
this.logger.info('Connecting to platform...');
|
|
58
61
|
await this.provider.connect();
|
|
59
62
|
}
|
|
@@ -61,6 +64,27 @@ class UnifiedClient extends events_1.EventEmitter {
|
|
|
61
64
|
this.logger.info('Disconnecting from platform...');
|
|
62
65
|
await this.provider.disconnect();
|
|
63
66
|
}
|
|
67
|
+
checkStartupPermission() {
|
|
68
|
+
const platformUpper = this.platform.toUpperCase();
|
|
69
|
+
const envVar = `ALLOW_${platformUpper}_BOT`;
|
|
70
|
+
const envValue = process.env[envVar];
|
|
71
|
+
const isExplicitlyDisabled = envValue === 'false';
|
|
72
|
+
const isExplicitlyEnabled = envValue === 'true';
|
|
73
|
+
if (isExplicitlyDisabled) {
|
|
74
|
+
const errorMsg = `${this.platform} bot startup blocked by ${envVar}=false`;
|
|
75
|
+
this.logger.error(errorMsg);
|
|
76
|
+
throw new Error(errorMsg);
|
|
77
|
+
}
|
|
78
|
+
const preventAutoStart = this.config.preventAutoStart;
|
|
79
|
+
if (preventAutoStart === true) {
|
|
80
|
+
if (!isExplicitlyEnabled) {
|
|
81
|
+
const errorMsg = `${this.platform} bot startup blocked. Set ${envVar}=true to allow startup, or remove preventAutoStart config.`;
|
|
82
|
+
this.logger.error(errorMsg);
|
|
83
|
+
throw new Error(errorMsg);
|
|
84
|
+
}
|
|
85
|
+
this.logger.info(`${this.platform} bot startup permitted via ${envVar}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
64
88
|
get isConnected() {
|
|
65
89
|
return this.provider.isConnected;
|
|
66
90
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAKA,mCAAsC;AAUtC,2DAA+D;AAE/D,wDAAyD;AAEzD,2CAA0D;AAC1D,2CAA6D;AAqC7D,MAAa,aAAc,SAAQ,qBAAY;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/types/platform.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/types/platform.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK1C,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IAIpD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAKzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAQ5B,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IASnF,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAOrF,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAOnE,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAOvC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAOhD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAO1C,cAAc,CAAC,eAAe,EAAE,OAAO,GAAG,OAAO,CAAC;IAOlD,WAAW,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAOzC,cAAc,CAAC,eAAe,EAAE,OAAO,GAAG,OAAO,CAAC;IAOlD,YAAY,CAAC,aAAa,EAAE,OAAO,GAAG,KAAK,CAAC;IAK5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAK9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAKjC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAKD,MAAM,WAAW,cAAc;IAE7B,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/types/platform.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK1C,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IAIpD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAKzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAQ5B,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IASnF,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAOrF,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAOnE,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAOvC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAOhD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAO1C,cAAc,CAAC,eAAe,EAAE,OAAO,GAAG,OAAO,CAAC;IAOlD,WAAW,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAOzC,cAAc,CAAC,eAAe,EAAE,OAAO,GAAG,OAAO,CAAC;IAOlD,YAAY,CAAC,aAAa,EAAE,OAAO,GAAG,KAAK,CAAC;IAK5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAK9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAKjC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAKD,MAAM,WAAW,cAAc;IAE7B,KAAK,EAAE,MAAM,CAAC;IAQd,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAKD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;AAK9C,MAAM,WAAW,oBAAoB;IAEnC,MAAM,EAAE,OAAO,CAAC;IAGhB,OAAO,EAAE,OAAO,CAAC;IAGjB,WAAW,EAAE,OAAO,CAAC;IAGrB,SAAS,EAAE,OAAO,CAAC;IAGnB,WAAW,EAAE,OAAO,CAAC;IAGrB,OAAO,EAAE,OAAO,CAAC;IAGjB,KAAK,EAAE,OAAO,CAAC;IAGf,aAAa,EAAE,OAAO,CAAC;IAGvB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,mBAAmB,EAAE,MAAM,CAAC;IAG5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B"}
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -10,8 +10,10 @@ export declare class Logger {
|
|
|
10
10
|
private level;
|
|
11
11
|
private prefix;
|
|
12
12
|
private constructor();
|
|
13
|
+
private detectProductionEnvironment;
|
|
13
14
|
static getInstance(): Logger;
|
|
14
15
|
setLevel(level: LogLevel): void;
|
|
16
|
+
isProduction(): boolean;
|
|
15
17
|
getLevel(): LogLevel;
|
|
16
18
|
setPrefix(prefix: string): void;
|
|
17
19
|
debug(message: string, ...args: unknown[]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAIA,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,IAAI,IAAI;CACT;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,MAAM,CAAkC;IAEhD,OAAO;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAIA,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,IAAI,IAAI;CACT;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,MAAM,CAAkC;IAEhD,OAAO;IASP,OAAO,CAAC,2BAA2B;IAcnC,MAAM,CAAC,WAAW,IAAI,MAAM;IAW5B,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAO/B,YAAY,IAAI,OAAO;IAQvB,QAAQ,IAAI,QAAQ;IAQpB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAS/B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAWhD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAW/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAW/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAUhD,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;CAMnC;AAKD,wBAAgB,SAAS,IAAI,MAAM,CAElC"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -14,6 +14,15 @@ class Logger {
|
|
|
14
14
|
constructor() {
|
|
15
15
|
this.level = LogLevel.INFO;
|
|
16
16
|
this.prefix = '[ChatPlatformBridge]';
|
|
17
|
+
this.detectProductionEnvironment();
|
|
18
|
+
}
|
|
19
|
+
detectProductionEnvironment() {
|
|
20
|
+
const nodeEnv = process.env['NODE_ENV']?.toLowerCase();
|
|
21
|
+
const isProduction = nodeEnv === 'production' || nodeEnv === 'prod';
|
|
22
|
+
if (isProduction) {
|
|
23
|
+
this.level = LogLevel.WARN;
|
|
24
|
+
console.log(`${this.prefix} [INFO] Production environment detected - logging set to WARN level`);
|
|
25
|
+
}
|
|
17
26
|
}
|
|
18
27
|
static getInstance() {
|
|
19
28
|
if (!Logger.instance) {
|
|
@@ -24,6 +33,10 @@ class Logger {
|
|
|
24
33
|
setLevel(level) {
|
|
25
34
|
this.level = level;
|
|
26
35
|
}
|
|
36
|
+
isProduction() {
|
|
37
|
+
const nodeEnv = process.env['NODE_ENV']?.toLowerCase();
|
|
38
|
+
return nodeEnv === 'production' || nodeEnv === 'prod';
|
|
39
|
+
}
|
|
27
40
|
getLevel() {
|
|
28
41
|
return this.level;
|
|
29
42
|
}
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED