Referencia: Variables de Entorno y Config Helpers
Env
Singleton inyectable para leer variables de entorno dentro de servicios y constructores.
import { Env, singleton } from '@wabot-dev/framework'
@singleton()export class MiServicio { constructor(private env: Env) {}}Métodos
| Método | Retorna | Descripción |
|---|---|---|
requireString(name, options?) | string | Lanza error si la variable no existe y no hay default. |
requireNumber(name, options?) | number | Igual que requireString pero convierte a número. |
isDevelopment() | boolean | WABOT_ENV === 'development' (o no definida). |
isProduction() | boolean | WABOT_ENV === 'production'. |
isTesting() | boolean | WABOT_ENV === 'testing'. |
const url = env.requireString('DATABASE_URL')const port = env.requireNumber('PORT', { default: 3000 })const key = env.requireString('API_KEY', { default: 'dev-key' })Variables del framework
| Variable | Default | Descripción |
|---|---|---|
WABOT_ENV | development | Entorno de ejecución. |
PORT | 3000 | Puerto HTTP. |
JWT_SECRET | — | Clave secreta JWT (requerida si usas auth). |
JWT_ALGORITHM | HS256 | Algoritmo de firma JWT. |
JWT_ACCESS_EXPIRATION_SECONDS | 600 | Expiración del access token. |
JWT_REFRESH_EXPIRATION_SECONDS | 31536000 | Expiración del refresh token. |
SOCKET_CORS_ORIGIN | * | Origen CORS para WebSocket. |
DATABASE_URL | — | URL de conexión PostgreSQL. |
Config helpers
Funciones de template tag para pasar variables de entorno directamente en argumentos de decoradores. Se evalúan cuando el decorador se ejecuta (carga del módulo), no en el constructor.
import { str, num, bool, obj, strArr, numArr, boolArr } from '@wabot-dev/framework'Todos los helpers
| Helper | Tipo resuelto | Ejemplo | Variable de entorno |
|---|---|---|---|
str | string | str`api.key` | API_KEY |
num | number | num`server.port:3000` | SERVER_PORT |
bool | boolean | bool`feature.enabled:false` | FEATURE_ENABLED |
obj | object (JSON) | obj`service.config` | SERVICE_CONFIG |
strArr | string[] | strArr`allowed.origins` | ALLOWED_ORIGINS |
numArr | number[] | numArr`retry.delays` | RETRY_DELAYS |
boolArr | boolean[] | boolArr`feature.flags` | FEATURE_FLAGS |
Sintaxis
str`ruta.al.valor` // string requerido — error si no existestr`ruta.al.valor:mi-default` // string con valor por defectonum`servidor.puerto:3000` // número con defaultbool`funcion.activa:false` // boolean con defaultConversión de ruta a variable de entorno
La ruta se convierte a mayúsculas y los puntos se reemplazan por guiones bajos:
| Ruta | Variable de entorno |
|---|---|
whatsapp.number | WHATSAPP_NUMBER |
telegram.bot_token | TELEGRAM_BOT_TOKEN |
socket.namespace | SOCKET_NAMESPACE |
server.port | SERVER_PORT |
feature.enabled | FEATURE_ENABLED |
Uso en canales
@whatsApp({ number: str`whatsapp.number`, // WHATSAPP_NUMBER accessToken: str`whatsapp.access_token`, // WHATSAPP_ACCESS_TOKEN businessNumberId: str`whatsapp.business_number_id`, // WHATSAPP_BUSINESS_NUMBER_ID})
@socket({ namespace: str`socket.namespace:chat` }) // SOCKET_NAMESPACE, default: 'chat'
@telegram()no admite config helpers — usaprocess.env.TELEGRAM_BOT_TOKEN!directamente.
Arrays
Para strArr, numArr y boolArr, el valor en la variable de entorno puede ser:
- JSON:
["a","b","c"] - Separado por comas:
a,b,c
ALLOWED_ORIGINS=https://app.example.com,https://admin.example.comRETRY_DELAYS=[1000,5000,30000]