Sistema de Debug
Soporte configurable de debug para desarrollo — logging y buffer para rastrear resolución y middleware.
El debug se activa vía configuración y proporciona una función de log y un buffer opcional usados durante el render:
Qué Proporciona:
| Recurso | Propósito |
|---|---|
| DebugConfig | Habilitar debug y flags opcionales para log de resolución de componentes, middleware y reacciones |
| Contexto de debug | Función log(category, message, data?) y un buffer (add, clear, getAll) pasados por middleware y resolución |
| Activación | Establecer debug={{ enabled: true }} en ScheptaProvider o FormFactory |
Activación:
<ScheptaProvider debug={{ enabled: true }}>
<App />
</ScheptaProvider>
// O por factory
<FormFactory schema={schema} debug={true} />Resultado: Cuando está habilitado, el sistema puede registrar resolución de componentes, ejecución de middleware y reacciones. Middleware y orquestador reciben un contexto de debug y pueden registrar o bufferizar entradas.
Configuración de Debug
DebugConfig (de @schepta/core):
| Propiedad | Tipo | Descripción |
|---|---|---|
enabled | boolean | Interruptor general del debug |
logComponentResolution | boolean (opcional) | Registrar cuando se resuelven componentes |
logMiddlewareExecution | boolean (opcional) | Registrar cuando corre el middleware |
logReactions | boolean (opcional) | Registrar ejecución de reacciones |
DebugContextValue (pasado cuando el debug está habilitado):
isEnabled— true cuando el debug está activolog(category, message, data?)— registrar un mensaje (ej. en consola)buffer—{ add(entry), clear(), getAll() }para almacenar entradas de debug (ej. para inspección posterior)
Las factories crean un contexto de debug cuando debug.enabled es true y lo pasan al contexto de middleware y a la resolución. El middleware puede usar context.debug?.log() para enviar información cuando el debug está habilitado.
Cómo Funciona
- Provider o FormFactory recibe
debug(ej.{ enabled: true }). - Config mezclada incluye debug; cuando está habilitado, se crea un contexto de debug (ej. con
logescribiendo en consola y un buffer). - Contexto de middleware incluye
debug. El middleware puede llamar acontext.debug?.log('middleware', 'message', data). - Resolución puede usar el debug para advertir cuando no se encuentra un componente o cuando
x-customestá definido pero no hay componente custom registrado.
Esto da visibilidad sobre resolución y middleware sin requerir una UI separada; puedes extender el buffer o la salida de log según necesites en tu aplicación.
Conceptos Relacionados
El debug se configura y usa en todos los conceptos:
- 01. Factories: Las factories pasan el debug al pipeline
- 04. Schema Resolution: La resolución puede registrar los pasos cuando el debug está habilitado
- 05. Renderer: Los renderers reciben las props tras el middleware (el debug puede haberse usado ahí)
- 06. Middleware: El middleware recibe
context.debugy puede registrar o bufferizar - 03. Provider: Debug configurado vía prop
debugdel Provider - 02. Schema Language: El schema es lo que la resolución y el middleware procesan; el debug ayuda a rastrear cómo se interpreta