
Un potente compilador/ofuscador de sitios web para fines de optimización o protección de propiedad intelectual.

WebSafeCompiler (WSC) es una utilidad avanzada (compilador de sitios web) diseñada para la optimización, minificación y ofuscación (si la necesitas) de aplicaciones web y sitios web usando Node.js. Mejora tus recursos web al reducir el tamaño de los archivos o proporcionar una protección duradera contra la ingeniería inversa, asegurando que tu código esté listo para el despliegue y sea seguro.
[!NOTE]
Adecuado para sitios *.github.io
El compilador es monolítico: toda la implementación reside en source/wsc.js. Las pruebas de regresión se encuentran por separado en tests/.
Para aprovechar todo el potencial de WebSafeCompiler, ejecuta el siguiente comando en tu terminal:
node wsc.js <input_dir> <output_dir> [--map] [--smart] [--drm]
<input_dir>: Directorio que contiene los archivos de origen que se van a procesar.<output_dir>: Directorio donde se generarán los archivos optimizados y ofuscados.-m, --map: Crea un sitemap.xml en el directorio de salida para mejorar el SEO-s, --smart: Detecta automáticamente los archivos minificados y los omite. Esto incluye archivos JS y CSS.-d, --drm: Habilita la ofuscación de código (protección DRM) para proteger tu código fuente contra análisis no autorizados.
class, id y title. Los nombres de clase y atributos existentes se conservan. Las dependencias detectadas de selectores e inspección del DOM limitan el ruido con una advertencia en la consola.-h, --help: Muestra el mensaje de ayuda con instrucciones de uso detalladas.-v, --version: Muestra la versión actual de WebSafeCompiler.node wsc.js "/path/to/source" "/path/to/output" --drm --smart
Este comando procesará todos los archivos dentro del directorio de origen especificado, los optimizará y, si el flag de ofuscación está habilitado, protegerá el código contra acceso no autorizado o manipulación. Los archivos de salida estarán listos para su despliegue en su entorno web.

WebSafeCompiler utiliza las siguientes bibliotecas para trabajar con códigos JavaScript:
Para comenzar con WebSafeCompiler, necesitará tener Node.js instalado en su sistema. Siga estos pasos para instalar los paquetes requeridos:
Instalar Node.js: Descargue e instale Node.js desde el sitio web oficial de Node.js. Siga las instrucciones de instalación para su sistema operativo.
Clonar el repositorio: Si aún no lo ha hecho, clone el repositorio en su máquina local:
git clone <repository-url>
cd <repository-directory>/source
Instalar dependencias: Navegue al directorio del proyecto e instale los paquetes npm necesarios:
npm install
¡Listo! Puede usar WSC.
WSC minifica el espaciado de etiquetas/atributos HTML y elimina los comentarios HTML ordinarios, mientras preserva los valores entrecomillados, el espacio en blanco del texto, los cuerpos sin procesar de script/style, los comentarios condicionales y los marcadores de framework. La inspección detectada de código fuente/comentarios deshabilita esas ediciones de marcado con una advertencia. JavaScript utiliza el mangling de nombres locales y cinco pasadas de compresión mientras conserva los globales públicos y los nombres de funciones. DRM conserva el aplanamiento del flujo de control, la inyección de código muerto y la cobertura completa de arrays de cadenas con codificación base64. CSS se analiza y minifica; el JS no soportado y el CSS con advertencias del analizador se mantienen sin cambios con una advertencia. Los recursos que no están en UTF-8 se copian sin conversión. Los recursos SRI locales se procesan antes que el HTML, luego los metadatos SHA-256/384/512 se recalculan a partir de los bytes finales en las referencias de script, hoja de estilos, precarga y plantilla. Los hashes de scripts externos coincidentes en políticas CSP accesibles también se actualizan. Los recursos compartidos se mantienen sin cambios con una advertencia de DRM si alguna página referenciadora tiene una CSP no disponible o no puede reescribirse de forma segura como UTF-8. Los metadatos SRI no válidos permanecen bloqueados; los recursos alojados externamente no se reescriben.
DRM añade clases aleatorias a los atributos class existentes y dos atributos inertes aleatorios alrededor de cada atributo real de las etiquetas HTML ordinarias elegibles. Los nombres aleatorios se verifican contra el texto fuente de HTML, CSS y JS. Los selectores de igualdad/subcadena de clase preservan los valores de clase afectados; el análisis AST limita la inspección de clases/atributos a elementos identificados estáticamente, alias inmutables y subárboles de observadores, utilizando cada página y sus dependencias locales de JS/CSS. Los elementos no relacionados aún reciben ruido. Los receptores desconocidos, los selectores en tiempo de ejecución, la desestructuración y los observadores no resueltos utilizan un fallback conservador e imprimen advertencias. Las etiquetas script/style/meta/noscript, los elementos personalizados y los nodos SVG/MathML externos no reciben atributos basura. Estas protecciones cubren dependencias conocidas; los selectores calculados dinámicamente o la reflexión no siempre pueden inferirse estáticamente.
En modo DRM, WSC extrae automáticamente el JavaScript inline elegible a archivos ofuscados wsc-inline-*.js junto a cada documento HTML cuando se aplica una configuración CSP compatible: _headers raíz, vercel.json raíz (reglas headers), o una etiqueta meta CSP en el HTML. Añade 'self' a script-src-elem en la política de salida, preservando otros permisos de origen, reglas script-src para manejadores de eventos y directivas no relacionadas. Esto amplía intencionalmente los permisos de scripts a archivos del mismo origen. Despliegue el JavaScript emitido y la configuración de cabeceras junto con el HTML. Los nonces permanecen sin cambios; los archivos generados incluyen hashes SRI. Se admiten rutas literales y comodines *.