⚠️ Advertencia sobre Modificaciones del Core: Si bien BaP Framework permite modificar cualquier archivo en src/_main/, ten en cuenta que al actualizar a una nueva versión de BaP en el futuro, cualquier cambio manual en los archivos del núcleo se sobrescribirá y perderá. Se sugiere contactar al referente o mantenedor del framework para sugerir mejoras o cambios antes de alterar el motor localmente.

Módulo router.js

Motor de enrutamiento SPA (Single Page Application). Controla el estado de la sesión, redirecciones seguras y parseo de parámetros URL.

Funciones Exportadas (export function)

1. goTo(route, params)

Firma: goTo(route: Object|string, params?: Object): Promise<void>

Propósito: Navega programáticamente hacia una ruta registrada en la aplicación actualizando la URL mediante `window.history.pushState`.

ParámetroTipoRequeridoDescripción
routeObject | StringObjeto de ruta registrado en routes o string con la ruta (ej. "/pages/core/").
paramsObjectOpcionalParámetros de consulta (query params) a adjuntar en la URL.

Ejemplo de uso:

import { goTo } from "../../_main/router.js";
import { routes } from "../../_main/routerPaths.js";

// Navegar programáticamente a la vista de componentes
goTo(routes.components);

2. sessionStartedControl(route, initSession, redirectionCallbackOnNoSession)

Firma: sessionStartedControl(route: Object, initSession?: boolean, redirectionCallbackOnNoSession?: Function): void

Propósito: Evalúa los permisos de la ruta actual (`requireAuth`). Si requiere autenticación y el usuario no tiene sesión iniciada, ejecuta la redirección o el callback configurado.

ParámetroTipoRequeridoDescripción
routeObjectObjeto de ruta que contiene las reglas de validación en validate.signIn.
initSessionBooleanOpcionalSi es true, dispara automáticamente el flujo de inicio de sesión si no hay sesión activa.
redirectionCallbackOnNoSessionFunctionOpcionalCallback personalizado a ejecutar en caso de ausencia de sesión.

Ejemplo de uso:

import { sessionStartedControl } from "../../_main/router.js";
import { routes } from "../../_main/routerPaths.js";

// Validar inicio de sesión antes de renderizar una vista protegida
sessionStartedControl(routes.core, false);

3. getQueryParams()

Firma: getQueryParams(): Object

Propósito: Parsea los parámetros de consulta (`searchParams`) de la URL actual de forma segura y devuelve un objeto JavaScript sanitizado.

Ejemplo de uso:

import { getQueryParams } from "../../_main/router.js";

// Leer query params de la URL (ej. ?view=full&id=123)
const params = getQueryParams();
console.log("ID de consulta:", params.id);

Buenas Prácticas