Spraxium logoSpraxium

Registro de plugins

Las factories de plugins producen entradas tipadas para el array plugins en spraxium.config.ts. Aprende a registrar plugins oficiales y a mantener la configuración de cada plugin aislada y auditable.

Cómo funciona el array plugins

Cada entrada en el array plugins es un objeto plano con dos propiedades: un string namespace que identifica de forma única al plugin y una carga config con sus opciones. Nunca creas este objeto manualmente. Los paquetes de plugins exportan helpers de factory tipados como defineHttp, defineI18n, defineSchedule y defineSignal que producen entradas con la forma correcta y con inferencia completa en TypeScript. El framework resuelve la configuración de cada plugin en runtime emparejando el namespace, por lo que cambiar un plugin nunca afecta a otro.

spraxium.config.ts
import { defineConfig } from '@spraxium/core';
import { defineHttp } from '@spraxium/http';
import { defineI18n } from '@spraxium/i18n';
import { defineSchedule } from '@spraxium/schedule';

export default defineConfig({
  plugins: [
    defineI18n({
      defaultLocale: 'en-US',
      references: [{ name: 'commands', path: './locales' }],
    }),
    defineHttp({
      enabled: true,
      port: 3001,
      host: 'localhost',
      apiKey: process.env.HTTP_API_KEY ?? 'dev-secret',
      sharding: false,
    }),
    defineSchedule({
      timezone: 'America/Sao_Paulo',
      defaultLockTtlMs: 60_000,
      disableAll: false,
    }),
  ],
});

Factories de plugins oficiales

FactoryPaqueteFinalidad
defineHttp@spraxium/httpPuente HTTP con enrutado estilo Express para APIs de bots.
defineI18n@spraxium/i18n

Internacionalización con referencias de locale y cadenas de fallback.

defineSchedule@spraxium/schedule

Programación de tareas basada en cron con soporte de zona horaria y locks.

defineSignal@spraxium/signal

Receptor en el lado del bot para sobres de eventos firmados desde servicios externos.

defineComponents@spraxium/components

Sistema de interacción de componentes para botones, selects y modales.

Extraer la configuración de plugins en archivos separados

En proyectos con varios plugins, mantener todas las llamadas de factory inline en spraxium.config.ts vuelve el archivo difícil de revisar. El patrón recomendado es extraer la llamada de factory de cada plugin a un archivo dedicado dentro de config/, exportar el resultado como constante con nombre e importarlo en la configuración raíz. Esto mantiene las opciones de cada plugin aisladas y auditables de forma independiente.

import { defineSchedule } from '@spraxium/schedule';

export const schedulePlugin = defineSchedule({
  timezone: 'America/Sao_Paulo',
  defaultLockTtlMs: 60_000,
  disableAll: false,
});

Mantén la configuración cerca del import de la factory

Cuando el namespace y la carga están visibles juntos en el mismo archivo, las auditorías y refactors son significativamente más rápidos. Evita repartir opciones de plugins entre módulos utilitarios o archivos de constantes compartidos para otros fines.