ForgeTotal.js 5
es

Total.js 5 (backend)

Rutas, acciones, esquemas, bases de datos, WebSocket, vistas y todo lo que se ejecuta en el servidor.

RecetaEtiquetas

Valida un body JSON con una acción

Define un esquema de entrada en una acción y deja que Total.js rechace las peticiones inválidas antes de ejecutar tu código.

routingactionsvalidation

Expón acciones a través de un único endpoint API

Declara endpoints ROUTE('API ...') para que un cliente llame a muchas acciones con POST {schema, data} en una sola URL.

routingapiactions

Lee parámetros de la URL en una ruta

Declara segmentos dinámicos como {id} en una ruta y léelos desde $.params.

routingparams

Captura muchas URL con una ruta comodín

Termina una ruta con * para coincidir con todo lo que hay debajo de una ruta y mantén rutas específicas para las excepciones.

routing

Gestiona cada método HTTP

Declara rutas para GET, POST, PUT, PATCH y DELETE y lee el método desde $.method.

routinghttp

Restringe una ruta con flags

Añade @flags como @json, @xml o @upload para que una ruta solo coincida con las peticiones a las que está destinada.

routingflags

Lee la query string y el body de la petición

Usa $.query para los parámetros de la URL y $.body para datos JSON o de formulario en un manejador de ruta.

routingrequest

Limita el tamaño del payload y el timeout de una ruta

Añade <1kb o <10s a una ruta para limitar el tamaño de la petición o el tiempo que puede tardar el manejador.

routingsecuritylimits

Declara parámetros de ruta con tipo en una acción

Usa la opción params de NEWACTION para que Total.js valide los parámetros de la URL antes de ejecutar tu código.

actionsroutingvalidation

Elige cómo responder

Envía JSON, HTML, texto plano, XML, redirecciones, respuestas vacías o datos binarios desde un manejador de ruta.

routingresponse

Lee cabeceras y trabaja con cookies

Lee las cabeceras de la petición desde $.headers, lee y escribe cookies con $.cookie() y define cabeceras de respuesta.

routingheaderscookies

Recibe subidas de ficheros

Acepta multipart/form-data con el flag @upload y lee los ficheros subidos desde $.files.

routinguploadfiles

Permite peticiones entre orígenes con CORS

Llama a CORS() para permitir que un origen, varios o todos usen tus rutas desde un navegador.

securitycorsrouting

Renderiza una vista sin escribir un manejador

Una ruta sin manejador renderiza la vista que lleva el nombre de su URL, o la vista que le indiques.

routingviews

Seleccione el tipo de entrada correcto para una acción

Seleccione los tipos de entrada, parámetros, cuestionarios y definiciones de salida, incluyendo conversiones y valores rechazados.

actionsvalidationtypes

Valida la query string en una acción

Declara query en NEWACTION para validar y convertir los parámetros de la URL, y lee los valores limpios desde $.query.

actionsvalidationquery

Filtra la respuesta de una acción con output

Declara output para que solo salgan de la acción los campos indicados, por ejemplo para no filtrar nunca el hash de una contraseña.

actionssecurity

Exige un usuario o un permiso en una acción

Usa las opciones user y permissions de NEWACTION para que la autorización viva junto a la acción y no en cada ruta.

actionsauthsecurity

Protege rutas con AUTH

Autentica cada petición con AUTH() y limita las rutas a usuarios identificados o anónimos con los prefijos + y -.

authroutingsecurity

Declara la ruta dentro de la acción

Pon la ruta en la opción route de NEWACTION y mantén la URL, la validación y el código en un solo lugar.

actionsrouting

Inicia sesión con la autenticación por sesión integrada

Pasa un objeto de opciones a AUTH() para obtener cookies de sesión firmadas, un almacén de sesiones y logout sin escribir la infraestructura.

authsessionssecurity

Llama a una acción desde tu propio código

Usa ACTION() para ejecutar una acción desde un temporizador, un trabajo u otra acción, con su propio payload, query y usuario.

actions

Encadena varias acciones en una ruta

Enumera varias acciones después de --> para ejecutarlas en orden con el mismo payload y marca cuál responde con (response).

actionsrouting

Añade un middleware a una ruta

Registra un middleware con MIDDLEWARE() y asócialo a las rutas con la marca #nombre.

middlewareroutingsecurity

Crea un chat con WebSocket

Declara una ruta SOCKET, escucha los mensajes y retransmítelos a todos los clientes conectados.

websocketrealtime

Conéctate a un servidor WebSocket desde Node

Usa WEBSOCKETCLIENT para abrir una conexión WebSocket desde tu app, enviar mensajes y reaccionar a las respuestas.

websocketrealtimeintegrations

Desacopla tu código con eventos

Emite y escucha eventos de la aplicación con EMIT(), ON(), ONCE() y OFF() para que los módulos no se llamen directamente.

eventsarchitecture

Guarda y lee datos con la base NoSQL integrada

Inserta y consulta documentos con NOSQL() y expónlos mediante acciones, sin instalar ninguna base de datos.

nosqldatabaseactions

Consulta la base de datos NoSQL

Filtra, ordena, pagina y proyecta documentos con where, in, between, search, sort, take, skip y fields.

nosqldatabasequeries

Actualiza y elimina documentos NoSQL

Cambia documentos con update() y where(), bórralos con remove() y lee cuántos se vieron afectados.

nosqldatabase

Usa la API DATA para cambiar de base de datos

DATA direcciona una tabla como base/tabla, de modo que el mismo código de consultas funciona con el NoSQL integrado y con otras bases de datos.

databasenosqlquerybuilder

Cachea valores en memoria

Guarda valores con CACHE.set() y una caducidad, léelos con CACHE.get() y bórralos con remove() o reset().

cacheperformance

Persiste pequeños ajustes con MEMORIZE

Mantén en disco un objeto JSON que sobrevive a los reinicios, para contadores y ajustes que no necesitan una base de datos.

storagesettings

Genera ids únicos y hashes

Crea ids con UID() y GUID(), y hashes con HASH(), y sabe cuál usar en cada caso.

utilitiesidssecurity

Cachea resultados lentos en disco con FILECACHE

Usa FILECACHE() para calcular un resultado una vez y reutilizarlo desde un fichero durante un periodo, incluso tras un reinicio.

cacheperformancefiles

Guarda ficheros subidos con FILESTORAGE

Guarda las subidas en un almacén de ficheros gestionado con file.fs() y devuélvelas con $.filefs().

filesuploadstorage

Renderiza una vista con un layout

Renderiza una vista HTML con un modelo, recorre datos y pasa valores al layout.

viewslayouttemplates

Usa condiciones y escapado en las vistas

Ramifica con @{if}, @{else} y @{fi}, y elige entre la salida escapada @{value} y HTML sin procesar @{!value}.

viewstemplates

Recorre arrays y objetos en las vistas

Repite marcado con @{foreach} para arrays y objetos y usa el índice del elemento actual.

viewstemplates

Incluye vistas y recursos

Reutiliza marcado con @{view()} y añade scripts y estilos con @{import()}.

viewstemplatesassets

Rellena secciones del layout desde una vista

Declara una sección en una vista con @{section} e imprímela en el layout con @{section('name')}, y elige otro layout por petición.

viewslayouttemplates

Añade helpers a las vistas y lee la config desde ellas

Registra funciones en DEF.helpers para llamarlas desde las vistas y lee valores de config con @{'%key'}.

viewstemplatesconfig

Convierte Markdown a HTML

Usa el prototipo String.markdown() para convertir texto Markdown en HTML, para contenido guardado por usuarios o en ficheros.

contentmarkdown

Genera texto con plantillas Tangular

Usa Tangular.render() para rellenar plantillas de e-mails, documentos y mensajes con condiciones, bucles y helpers.

templatescontent

Renderiza plantillas desde texto, archivos y URLs con TEMPLATE

Usa TEMPLATE() para renderizar una plantilla Tangular que es un texto, un archivo de la carpeta de plantillas o una URL, con sus propios helpers y un modelo por defecto.

templatescontenttangular

Compara dos listas con DIFFARR: qué añadir, actualizar y eliminar

Usa DIFFARR() para comparar los elementos guardados en la base de datos con los de un formulario y obtener los que hay que añadir, actualizar y eliminar.

utilitiesarraysforms

Query Builder: DB() y NEWDB() con su propio driver de datos

Construye consultas con DB().find().where().sort() y deje que un conductor registrado con NEWDB() las ejecute, mientras que una conductora registrada implementa operaciones de base de datos.

databasequerybuilder

Configura la app con el fichero config

Guarda los ajustes en un fichero config y léelos con CONF.

configsettings

Cifra y descifra datos con una clave

Convierte objetos en tokens opacos con ENCRYPT() y léelos con DECRYPT(), para enlaces firmados y tokens de corta duración.

securitycrypto

Llama a servicios externos con API() y los drivers de NEWAPI()

Registra un driver para un servicio con NEWAPI() y llámalo desde las acciones con API(name, schema, data), con el mismo estilo de callback, error y promesa que el query builder.

apiservicesintegrations

Habla con modelos de lenguaje con AIMODEL(), NEWAIMODEL() y AIPARSER()

Cree una solicitud de chat con AIMODEL(), permita que un conductor registrado con NEWAIMODEL() la envíe a un proveedor y lea las respuestas transmitidas con AIPARSER().

aillmintegrations

Limita los intentos fallidos con BLOCKED

Cuenta los intentos por dirección IP con BLOCKED() y responde 429 al alcanzar el límite, para logins y restablecimientos de contraseña.

securityrate-limiting

Los pequeños asistentes globales: MAIN, REPO, FUNC, NOW, CLONE, COPY, QUERIFY y PROMISIFY

Utilice los globales de la aplicación, las fechas, las copias profundas, las líneas de consulta y los ayudantes prometidos.

globalsutilitieshelpers

Reúne errores con ErrorBuilder, regístralos con ERROR() y guarda un rastro de auditoría con AUDIT()

Responde con varios errores a la vez usando ErrorBuilder, la respuesta SUCCESS(), cómo ERROR() registra los fallos y cómo AUDIT() añade a un archivo de registro quién hizo qué.

errorsloggingaudit

Retrasa trabajo con setTimeout2() y clearTimeout2()

Usa setTimeout2() para ejecutar una función una sola vez cuando dejan de llegar llamadas, reemplazando el temporizador anterior con el mismo id, y cancélalo con clearTimeout2().

timersdebounceutilities

Tokens ligados a un navegador con ENCRYPTREQ() y DECRYPTREQ()

Cifra un valor junto con el user agent (y opcionalmente la dirección IP) de la petición y léelo de vuelta solo desde el mismo cliente.

securityencryptiontokens

Haz una copia de una carpeta con BACKUP() y RESTORE(), y ejecuta comandos con SHELL()

Empaqueta un directorio en un solo archivo y desempaquétalo de nuevo con BACKUP() y RESTORE(), y ejecuta un comando de la shell en la carpeta del proyecto con SHELL().

backupshellfiles

Pon la aplicación en mantenimiento con PAUSESERVER()

Pausa el servidor por nombre para que cada petición reciba una página 503, reanúdalo y ten en cuenta que sin segundo argumento la llamada alterna el estado.

maintenanceserveravailability

Reglas de negocio como texto con NEWMACRO()

Compila reglas pequeñas escritas en un lenguaje sencillo (IF, ELSE, AND, OR, RETURN, llamadas a helpers) en una función que ejecutas con un modelo, de modo que las reglas puedan vivir en un archivo o en una base de datos.

macrosrulesscripting

Sirve ficheros estáticos desde la carpeta public

Los ficheros del directorio public se sirven automáticamente, sin necesidad de ruta.

staticfiles

Llama a otra dirección con AJAX() desde el servidor

Usa AJAX() para llamar a una dirección HTTP con un cuerpo JSON y obtener la respuesta ya interpretada, como promesa o con callback, y entiende qué pasa con los errores y con XML.

httprequestsajax

Llama a otras APIs HTTP con RESTBuilder

Haz peticiones GET y POST a otro servicio, define cabeceras y un timeout, y lee el estado y la respuesta ya interpretada.

integrationshttprestbuilder

Libera un stream cuando termina con CLEANUP()

Usa CLEANUP() para destruir un stream en cuanto ha terminado o ha fallado, de modo que no queden manejadores de archivo abiertos, con un callback o como promesa.

streamsfilescleanup

Traduce una vista a varios idiomas

Marca los textos con @(...) en las vistas y aporta las traducciones en ficheros de recursos elegidos con LOCALIZE().

localizationi18nviews

Ejecuta código con una programación usando CRON

Registra una función con CRON() y una línea cron de cinco campos, y entiende cuándo se comprueba y cómo se elimina una tarea.

cronschedulerjobs

Ejecuta trabajo pesado en un hilo o en un proceso hijo

Usa NEWTHREAD() para arrancar un hilo worker, enviarle mensajes y leer sus respuestas sin bloquear el proceso principal.

workerthreadperformance

Comparte unos pocos hilos de trabajo con NEWTHREADPOOL()

Arranca un número fijo de workers, toma uno con pool.exec() cuando haya trabajo, devuélvelo con release() y deja que los demás trabajos esperen a un worker libre.

workerthreadpoolperformance

Llama a otros servidores con REQUEST y guarda archivos con DOWNLOAD

Usa REQUEST() para llamadas HTTP de bajo nivel con control total del método, las cabeceras, la query y el cuerpo, y DOWNLOAD() para descargar un archivo remoto al disco.

httprequestdownload

Envía un correo desde una vista

Configura SMTP en el archivo config, renderiza una vista como cuerpo del mensaje con MAIL() y envía HTML ya preparado con HTMLMAIL().

mailsmtpemail

Personaliza las páginas 404 y 401

Registra manejadores ROUTE('#404') y ROUTE('#401') para reemplazar las páginas de error integradas y dispáralos tú mismo con $.fallback().

errors404routing

Envíate un mensaje con LOGMAIL()

Envía un mensaje de texto plano o JSON a una dirección sin vista, para registros y alertas, con la misma configuración SMTP que MAIL().

mailsmtplogging

Envía archivos y streams al cliente

Sirve un archivo del disco con $.file(), fuerza un nombre de descarga, envía contenido generado con $.stream() y responde 404 cuando el archivo no existe.

filesdownloadstream

Reenvía peticiones a otro servidor

Usa PROXY() para asignar un prefijo de URL a un servidor de destino, elige cómo se copia la ruta y usa $.proxy() para reenviar una sola ruta.

proxygatewayintegrations

Publica un servidor local a través de un túnel con PROXYSERVER() y PROXYCLIENT()

Deja que un servidor Total.js con dirección pública reenvíe peticiones a un programa que solo funciona en una máquina privada, con un túnel WebSocket que abre el lado privado.

proxytunnelwebsocketintegrations

Protege formularios y peticiones con tokens CSRF

Crea un token con $.csrf(), envíalo con la petición y verifícalo en un middleware para rechazar las peticiones de otros sitios.

securitycsrfmiddleware

Agrupa acciones en un schema y reutiliza definiciones de input

Usa NEWSCHEMA() para declarar acciones relacionadas bajo un mismo nombre y comparte una definición de input entre acciones con un archivo en jsonschemas/.

schemaactionsvalidation

Construye un pipeline de procesamiento con transforms

Registra varios pasos bajo un mismo nombre con NEWTRANSFORM() y haz pasar un valor por ellos en orden con TRANSFORM().

transformpipeline

Intercambia mensajes con el Total Messaging Service

Activa el endpoint WebSocket de TMS y deja que clientes externos reciban mensajes publicados, envíen mensajes a tu aplicación y llamen a sus funciones.

tmspublishsubscribewebsocketmessaging

Crea un recurso REST completo con acciones

Declara las acciones query, read, insert, update, patch y remove sobre la base NoSQL, con validación, un 404 para los registros que no existen y rutas que asignan cada método HTTP.

actionscrudrestnosql

Configura una ruta WebSocket con flags, autenticación y parámetros

Elige el tipo de mensaje con @text o @binary, exige un usuario autenticado con el prefijo +, comprueba un token CSRF con @csrf y lee parámetros de la URL en rutas SOCKET.

websocketrealtimesecurity

Minifica y combina CSS, JavaScript y HTML

Los archivos estáticos y las respuestas HTML se minifican automáticamente; usa MERGE() para servir varios archivos como uno y los ajustes $minify para desactivarlo.

performancecssjavascripthtmlminification

Redimensiona y convierte imágenes

Procesa imágenes con Image.load(), encadena operaciones de redimensionado, recorte y formato, guarda el resultado, mide su tamaño y sirve miniaturas con $.image().

imagesthumbnailsgraphicsmagick

Verificar los límites del esquema numérico en lugar de asumir la coerción completa

Véase Int, SmallInt, TinyInt y Number2 con esquemas compactos nativos, incluyendo valores fraccionados, entradas cero y fuera de rango.

validationschemanumbersboundaries

Usa los helpers integrados de string, number, date y array

Total.js amplía String, Number, Date y Array con helpers para slugs, hashes, formato, parseo, agrupación y búsqueda, y ofrece U.extend() y U.clone() para objetos.

utilitieshelpersstringarraydate

Registre eventos de auditoría de acciones con un receptor de auditoría nativo

Observe la opción de auditoría y las llamadas $.audit() explícitas sin ponerse en contacto con un servicio de registro ni escribir datos confidenciales en el registro de una aplicación.

actionsauditsecurity

Ejecuta en modo debug y en modo release

Las opciones de Total.run() eligen entre el modo debug y el release; lee el modo con DEBUG y limita las rutas a un modo con @debug y @release.

deploymentdebugreleaseenvironment

Prueba la aplicación con el ejecutor de tests integrado

Escribe un test.js que arranque la aplicación, registre tests con Test.push(), compruebe los resultados con Test.print() y termine con un código distinto de cero cuando uno falle.

testingci

Utilice todos los núcleos CPU con el modo de cluster

Comienza varios procesos de trabajadores detrás de un puerto con la opción de cluster de Total.run(), y sabe lo que se comparte entre ellos y lo que no es.

clusterperformancedeployment

Carga un módulo JavaScript desde una URL con IMPORT()

Descarga un archivo con JavaScript desde una dirección, guárdalo en la carpeta tmp, haz require y usa lo que exporta; la segunda llamada no lo descarga otra vez.

modulesdownloaddependencies

Construye un flujo de componentes con Flow.load() y ejecútalo con exec()

Describe un FlowStream como componentes y las conexiones entre ellos, cárgalo en la aplicación, envía un mensaje a través de él y lee la respuesta, y cambia la configuración de un componente mientras se ejecuta.

flowflowstreamcomponentsautomation

Prueba un componente de Flow por sí solo con Flow.test()

Carga un componente en un flujo propio, envíale un mensaje desde el código y lee lo que envía a sus salidas, sin construir el flujo entero.

flowflowstreamcomponentstests

Llama a un programa Python que sigue en marcha con PYPELINE()

Arranca un script de Python desde la aplicación, envíale mensajes JSON por un socket y recibe sus respuestas, con el script reiniciado si muere.

pythonpypelineintegrationsai

Enums y límites de validación en formato de string

Executar controles de esquema compacto positivos y negativos para enums, Color, Base64, Zip, Icon, JSON y formatos IP.

total5reference

TotalAPI y Componentator límites de servicio

Verificar la rama de TotalAPI y el uso local de Componentator sin realizar llamadas de servicio externas.

total5reference

QueryBuilder operaciones, filtros y contratos de conductor

Inspectar las opciones nativas de DB y NEWDB, resultados queudados, errores y formas de filtro sin confundir a un constructor con un conductor de datos.

total5reference

Compilar y ejecutar un componente nativo del servidor

Compila el componente de HTML confiado Total.js, crea un ejemplo, valida los mensajes, reconfigura y libera sus recursos.

total5reference

Controlador de llamadas, autorización manual y respuestas condicionales

Ejecución de jsonstring, respuesta, hecho, exitoso, autorizado, personalizado y recientemente modificado manejo.

total5reference

Opciones de transporte de acción y publicación TMS explícita

Testar, cifrar, comprimir y publicar contra HTTP y TMS reales en lugar de asumir que los metadatos se aplican.

total5reference

Caches estáticos en modo de liberación con Touch

Servir y modificar un archivo estático temporal, eliminar su representación cachada y eliminar las entradas 404 cachadas.

total5reference

RPC, eventos y conexiones compartidas

Exerce OPENCLIENT con una fijación de protocolo local, incluida la iniciación, la correlación de llamadas, el timout y la eliminación del cliente lógico.

total5reference

Cargar archivos de FlowStream y ejecutar trabajadores aislados

Ejecutar el mismo esquema de confianza de FlowStream como un hilo de trabajadores y un proceso infantil, cargar archivos .flow y eliminar ejemplos.

total5reference

El ciclo de acción, la extensión del resultado y los guardias de administradores

Exerce la entrada, la salida, el extendimiento y el su con acciones válidas, inactivas y falladas.

total5reference

SQL real con las transacciones nativas de QueryBuilder y SQLite

Registrar un controlador limitado de SQLite, ejecutar CRUD paramétrico y confirmar el compromiso, restringir el fracaso y girar contra una base de datos compatible con los archivos.

total5reference

Carga los recursos de la aplicación y evita las sorpresas del paquete de tiempo

Ejecutar LOAD en un proceso separado y verificar NPMINSTALL reutilización de un paquete ya disponible sin acceso a la red.

total5reference

Consultar un directorio LDAP local real

Consulta una instancia OpenLDAP aislada y verifica el resultado del enlace en total5 0.0.19.

total5reference

Archivos de aplicación como un paquete Total.js

Crea un paquete local, cargue sus definiciones a través del cargador de startup y verifica la extracción en .src.

total5reference

Limpieza propia de archivos cargados y creación de enlaces de consulta.

Verifique la limpieza de carga predeterminada, el borrado automático (falso), el borrado explícito y el reemplazo de consultas href.

total5reference