Fecha de publicación:

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:

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.