Ir al contenido

El validador

Cada vez que pulsas «Guardar versión», el Estudio valida el borrador. Lo hace en dos capas:

  1. Revisión estática. Lee los cuatro archivos sin ejecutarlos: que el manifest sea JSON válido, que el menú sea coherente, que index.html, style.css y script.js no usen nada prohibido, y que lo que declaras y lo que usas coincidan (eventos, parámetros, acciones y archivos).
  2. Prueba de ejecución. Abre el widget en un navegador de prueba conectado a un simulador de Streamer.bot, lanza los eventos declarados y mira qué pasa: si conecta, si se suscribe, si reacciona, si resiste una reconexión y si un mensaje con HTML acaba convertido en elementos.
  • Un error impide publicar la versión.
  • Un aviso no lo impide, pero señala algo que casi seguro quieres arreglar.
  • Algunos códigos son un aviso en el borrador y un error al guardar una versión (por ejemplo, asset_not_found).

Cada hallazgo trae un código (como js_forbidden_eval), el archivo y, si se sabe, la línea. Todos están en la lista de códigos, con lo que significan y cómo se arreglan.

  • Tamaño: 300 KB entre los cuatro archivos y 64 KB para manifest.json. El diseño de las alertas (alerts) cuenta aparte, hasta 128 KB.
  • Archivos propios: hasta 30 en assets.
  • Prueba de ejecución: 20 segundos como máximo, y un tope de memoria; si un widget se pasa, la prueba se corta (runtime_timeout y runtime_memory).
  • Cola: una tarea de Widget.queue dura como mucho 90 segundos y caben 50 a la espera.

Los widgets corren dentro de OBS, y por eso el validador es estricto con lo que pueden hacer:

  • Red: nada de fetch, WebSocket y similares. Los datos llegan por los eventos de Streamer.bot.
  • HTML dinámico: nada de innerHTML; el texto se pinta con Widget.dom.
  • Código dinámico: nada de eval ni Function, y nada de workers.
  • Ventanas: el widget no navega, no abre ventanas ni toca otras.
  • Recursos externos: solo imágenes de las CDN de emotes e insignias y fuentes de Google Fonts. Lo tuyo va en tu biblioteca.