Skip to content

Tipos, Enums e Interfaces

Fang JS está construido pensando en la máxima seguridad de tipos. Esta página contiene la referencia de los Enums e Interfaces que puedes importar para mantener tu código consistente y aprovechar el IntelliSense.


Los Enums ayudan a evitar errores de escritura (“magic strings”) en tu lógica de negocio.

Define los métodos HTTP más comunes.

MétodoValorDescripción
GETGETSolicita una representación del recurso especificado.
POSTPOSTEnvía datos al recurso especificado para crear o procesar una entidad.
PUTPUTReemplaza completamente el recurso destino con el payload enviado.
PATCHPATCHAplica modificaciones parciales a un recurso.
DELETEDELETEElimina el recurso especificado.
HEADHEADIgual que GET pero sin cuerpo de respuesta.
OPTIONSOPTIONSDescribe las opciones de comunicación disponibles para el recurso.
CONNECTCONNECTEstablece un túnel hacia el servidor del recurso destino.
TRACETRACERealiza una prueba de loop-back del mensaje hasta el recurso destino.

Define los códigos de respuesta semánticos más comunes.

MiembroValorDescripción
OK200Petición exitosa.
Created201Recurso creado con éxito.
Accepted202La petición fue recibida pero aún no procesada (útil para procesos async).
NoContent204Éxito sin cuerpo de respuesta.
MovedPermanently301El recurso fue movido permanentemente a otra URL.
Found302El recurso se encuentra temporalmente en otra URL.
NotModified304Indica que el recurso no ha sido modificado (usado para caché).
BadRequest400Error de sintaxis o validación del cliente.
Unauthorized401Requiere autenticación.
Forbidden403El cliente no tiene permisos para acceder al recurso.
NotFound404Recurso no encontrado.
MethodNotAllowed405Método HTTP conocido pero deshabilitado en el servidor.
Conflict409Conflicto con el estado actual del servidor (ej: duplicados).
UnprocessableEntity422La petición es válida pero contiene errores semánticos (validación).
TooManyRequests429Demasiadas peticiones en un periodo de tiempo (rate limiting).
InternalError500Error inesperado en el servidor.
NotImplemented501El servidor no soporta la funcionalidad requerida.
BadGateway502El servidor recibió una respuesta inválida del servidor upstream.
ServiceUnavailable503El servidor no está disponible temporalmente.
GatewayTimeout504El servidor no recibió respuesta a tiempo del servidor upstream.

Valores preconfigurados en segundos para la expiración de JWT o Cookies.

MiembroValor (segundos)Equivalente TiempoDescripción
FifteenMinutes90015 minutosIdeal para access tokens.
ThirtyMinutes180030 minutosSesiones de alta seguridad (ej: banca).
OneHour36001 horaEstándar para sesiones web.
TwoHours72002 horasSesiones web extendidas.
FourHours144004 horasEstándar para sesiones de jornada laboral.
EightHours288008 horasJornada laboral completa típica.
TwelveHours4320012 horasTípico para sesiones de apps móviles.
OneDay864001 díaPara sesiones de mayor duración.
OneWeek6048007 díasUsado en funcionalidad “Recordarme”.
TwoWeeks120960014 díasEstándar para refresh tokens extendidos.
OneMonth259200030 díasSesiones persistentes de largo plazo.

Códigos ANSI utilizados por el Logger. green, blue, yellow, cyan, magenta, red, reset.


Estos tipos definen la firma de las funciones que procesan tus peticiones.

La firma para funciones que están en medio del ciclo de vida.

type Middleware = (ctx: Context, next: NextFunction) => Promise<void> | void;

La firma para el controlador final de una ruta.

type Handler = (ctx: Context) => Promise<void> | void;

Opciones para el middleware de cors().

  1. origin: string | string[] | ((origin: string) => boolean).

  2. methods: Array de string pero también puede ser usada con el methods enum.

  3. allowedHeaders: string[] de cabeceras permitidas.

  4. credentials: boolean para permitir cookies/auth.

Configuración para el método ctx.setCookie().

PropiedadTipoDescripción
httpOnlybooleanBloquea el acceso desde JS (Mitiga XSS).
securebooleanSolo envía la cookie por HTTPS.
sameSiteStrict Lax NoneControla peticiones cross-site.
maxAgenumberSegundos de vida de la cookie.
pathstringRuta donde la cookie es válida.

Estructura base para los datos dentro de un token. Incluye soporte para claims estándar y campos personalizados.

type JWTPayload = {
iat?: number; // Issued At
exp?: number; // Expiration Time
[key: string]: any; // Campos personalizados
};

Usar los enums nativos hace que tu código sea mucho más profesional y resistente a errores:

import { httpStatus, methods, TokenExpiration } from "@fang-js/fang/types";
app.get("/status", (ctx) => {
// En lugar de usar 200, usamos el Enum
return ctx.json({ status: "online" }, httpStatus.OK);
});
// En configuraciones
const sessionTime = TokenExpiration.OneHour;