Skip to content

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étodoRetornaDescripción
requireString(name, options?)stringLanza error si la variable no existe y no hay default.
requireNumber(name, options?)numberIgual que requireString pero convierte a número.
isDevelopment()booleanWABOT_ENV === 'development' (o no definida).
isProduction()booleanWABOT_ENV === 'production'.
isTesting()booleanWABOT_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

VariableDefaultDescripción
WABOT_ENVdevelopmentEntorno de ejecución.
PORT3000Puerto HTTP.
JWT_SECRETClave secreta JWT (requerida si usas auth).
JWT_ALGORITHMHS256Algoritmo de firma JWT.
JWT_ACCESS_EXPIRATION_SECONDS600Expiración del access token.
JWT_REFRESH_EXPIRATION_SECONDS31536000Expiración del refresh token.
SOCKET_CORS_ORIGIN*Origen CORS para WebSocket.
DATABASE_URLURL 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

HelperTipo resueltoEjemploVariable de entorno
strstringstr`api.key`API_KEY
numnumbernum`server.port:3000`SERVER_PORT
boolbooleanbool`feature.enabled:false`FEATURE_ENABLED
objobject (JSON)obj`service.config`SERVICE_CONFIG
strArrstring[]strArr`allowed.origins`ALLOWED_ORIGINS
numArrnumber[]numArr`retry.delays`RETRY_DELAYS
boolArrboolean[]boolArr`feature.flags`FEATURE_FLAGS

Sintaxis

str`ruta.al.valor` // string requerido — error si no existe
str`ruta.al.valor:mi-default` // string con valor por defecto
num`servidor.puerto:3000` // número con default
bool`funcion.activa:false` // boolean con default

Conversión de ruta a variable de entorno

La ruta se convierte a mayúsculas y los puntos se reemplazan por guiones bajos:

RutaVariable de entorno
whatsapp.numberWHATSAPP_NUMBER
telegram.bot_tokenTELEGRAM_BOT_TOKEN
socket.namespaceSOCKET_NAMESPACE
server.portSERVER_PORT
feature.enabledFEATURE_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 — usa process.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
Terminal window
ALLOWED_ORIGINS=https://app.example.com,https://admin.example.com
RETRY_DELAYS=[1000,5000,30000]