Spraxium logoSpraxium

Registro de plugins

Factories de plugin produzem entradas tipadas para o array plugins em spraxium.config.ts. Aprenda a registrar plugins de primeira parte e a manter a configuração de cada plugin isolada e auditável.

Como o array plugins funciona

Cada entrada no array plugins é um objeto simples com duas propriedades: uma string namespace, que identifica o plugin de forma única, e uma carga config com suas opções. Você nunca cria esse objeto manualmente. Pacotes de plugin exportam helpers de factory tipados, como defineHttp, defineI18n, defineSchedule e defineSignal, que produzem entradas no formato correto com inferência completa de TypeScript. O framework resolve a configuração de cada plugin em runtime fazendo match pelo namespace, então mudar um plugin nunca afeta outro.

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 plugin de primeira parte

FactoryPackageFinalidade
defineHttp@spraxium/httpBridge HTTP com roteamento no estilo Express para APIs de bot.
defineI18n@spraxium/i18n

Internacionalização com referências de locale e cadeias de fallback.

defineSchedule@spraxium/schedule

Agendamento de tarefas baseado em cron, com suporte a fuso horário e lock.

defineSignal@spraxium/signal

Receptor no lado do bot para envelopes de eventos assinados vindos de serviços externos.

defineComponents@spraxium/components

Sistema de interação por components para buttons, selects e modals.

Extraindo a config do plugin para arquivos separados

Em projetos com vários plugins, manter todas as factory calls inline em spraxium.config.ts deixa o arquivo difícil de revisar. O padrão recomendado é extrair a factory call de cada plugin para um arquivo dedicado dentro de config/, exportar o resultado como uma constante nomeada e importá-la na config raiz. Isso mantém as opções de cada plugin isoladas e auditáveis de forma independente.

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

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

Mantenha a config perto do import da factory

Quando o namespace e a carga estão visíveis juntos no mesmo arquivo, auditorias e refactors ficam significativamente mais rápidos. Evite espalhar opções de plugin por módulos utilitários ou arquivos de constantes compartilhados usados para outras finalidades.