Una aplicación Teq es primero una aplicación Node.js y, después, una aplicación modular compuesta de plugins Teq que son módulos npm. El núcleo de plataforma tiene tres tareas: arrancar la aplicación y sus comandos de consola, descubrir y conectar plugins, y establecer la arquitectura fundamental.
Bootstrap
El punto de entrada es bin/tequila.mjs. Encuentra la raíz, carga el
contenedor DI, mapea fuentes del núcleo, crea configuración bootstrap,
obtiene TeqFw_Core_Back_App$, lo inicializa y lo ejecuta. El script
pertenece a la aplicación, pero se mantiene prácticamente idéntico de
una aplicación Teq a otra.
import { dirname, join } from 'node:path';
import { fileURLToPath } from 'node:url';
import teq from '@teqfw/core';
const root = join(dirname(fileURLToPath(import.meta.url)), '..');
teq({ path: root }).catch(console.error);
El comportamiento diferente viene de plugins instalados y comandos que aportan, no de reescribir el launcher.
Ciclo de vida
Durante la inicialización, TeqFw_Core_Back_App:
- inicializa logging;
- carga configuración local, por ejemplo conexión a base de datos;
- escanea el sistema de archivos y crea el registro de plugins;
- añade namespaces descubiertos al contenedor DI;
- reúne comandos CLI de esos plugins.
Al ejecutarse realiza el comando pedido —a menudo un servidor web— o
imprime la lista de comandos disponibles. También ofrece stop() para
cerrar ordenadamente recursos como conexiones de base de datos.
Logger y configuración
El diseño original expone una abstracción de logger común, capaz de
trabajar en backend o frontend y enrutar registros a consola, archivo,
base o servidor remoto. La configuración local de backend se lee de JSON
como cfg/local.json y se inyecta en los objetos que la necesitan. Los
secretos deben permanecer en configuración local ignorada o en un
entorno seguro de despliegue, nunca en el descriptor del paquete.
Escáner de plugins
Un plugin Teq es un paquete npm con teqfw.json en su raíz. Como mínimo
declara namespace y directorio de fuentes:
{
"autoload": {
"ns": "Vendor_Project_Plugin",
"path": "./src"
}
}
El escáner recorre node_modules, encuentra descriptores, registra los
paquetes y añade mapeos namespace-sistema de archivos a DI. Las demás
partes acceden a los descriptores mediante ese registro, sin volver a
escanear.
Comandos
La aplicación core es en esencia un envoltorio de commander. Los descriptores listan identificadores de módulos que producen DTO de comando:
{ "commands": ["TeqFw_Core_Back_Cli_Version"] }
Un DTO aporta action, descripción, nombre y realm opcional. El realm
antepone comandos de un plugin: app más clean se convierte en
app-clean.
const command = await container.get(`${factoryName}$`);
const fullName = command.realm ? `${command.realm}-${command.name}` : command.name;
commander.command(fullName).description(command.desc).action(command.action);
Resumen
El plugin Core convierte una colección de módulos npm en una aplicación Teq ejecutable. Descubre plugins, registra namespaces, inicializa logging y configuración local, reúne comandos y ejecuta el seleccionado mediante DI. Así el launcher permanece estable mientras la aplicación crece componiendo plugins.