
Um poderoso compilador/obfuscador de websites para fins de otimização ou proteção de propriedade intelectual.

WebSafeCompiler (WSC) é um utilitário avançado (compilador de sites) projetado para a otimização, minificação e ofuscação (se você precisar) de aplicações web e sites usando Node.js. Ele aprimora seus recursos web reduzindo o tamanho dos arquivos ou fornecendo proteção durável contra engenharia reversa, garantindo que seu código esteja pronto para implantação e seguro.
[!NOTE]
Adequado para sites *.github.io
O compilador é monolítico: toda a implementação reside em source/wsc.js. Os testes de regressão ficam separados em tests/.
Para aproveitar todo o potencial do WebSafeCompiler, execute o seguinte comando no seu terminal:
node wsc.js <input_dir> <output_dir> [--map] [--smart] [--drm]
<input_dir>: Diretório contendo os arquivos de origem a serem processados.<output_dir>: Diretório onde os arquivos otimizados e ofuscados serão gerados.-m, --map: Cria um sitemap.xml no diretório de saída para melhor SEO-s, --smart: Detecta automaticamente arquivos minificados e os ignora. Isso inclui arquivos JS e CSS.-d, --drm: Ativa a ofuscação de código (proteção DRM) para proteger seu código-fonte contra análise não autorizada.
class, id e title. Nomes de classes e atributos existentes são mantidos. Dependências detectadas de seletores e de inspeção do DOM limitam o ruído com um aviso no console.-h, --help: Exibe a mensagem de ajuda com instruções detalhadas de uso.-v, --version: Exibe a versão atual do WebSafeCompiler.node wsc.js "/path/to/source" "/path/to/output" --drm --smart
Este comando processará todos os arquivos dentro do diretório de origem especificado, otimizá-los-á e, se o sinalizador de ofuscação estiver ativado, protegerá o código contra acesso não autorizado ou adulteração. Os arquivos de saída estarão prontos para implantação no seu ambiente web.

O WebSafeCompiler utiliza as seguintes bibliotecas para trabalhar com códigos JavaScript:
Para começar a usar o WebSafeCompiler, precisará de ter o Node.js instalado no seu sistema. Siga estes passos para instalar os pacotes necessários:
Instalar o Node.js: Descarregue e instale o Node.js a partir do site oficial do Node.js. Siga as instruções de instalação para o seu sistema operativo.
Clonar o repositório: Se ainda não o fez, clone o repositório para a sua máquina local:
git clone <repository-url>
cd <repository-directory>/source
Instalar as dependências: Navegue até ao diretório do projeto e instale os pacotes npm necessários:
npm install
Concluído! Já pode usar o WSC.
O WSC minifica o espaçamento de tags/atributos HTML e remove comentários HTML comuns, preservando valores entre aspas, espaços em branco de texto, corpos brutos de script/style, comentários condicionais e marcadores de frameworks. A inspeção detetada de código-fonte/comentários desativa essas edições de marcação com um aviso. O JavaScript usa mangling de nomes locais e cinco passagens de compressão, mantendo globais públicos e nomes de funções. O DRM mantém o achatamento de fluxo de controlo, a injeção de código morto e a cobertura total de arrays de strings com codificação base64. O CSS é analisado e minificado; JS e CSS não suportados com avisos do parser são mantidos inalterados com um aviso. Os recursos não-UTF-8 são copiados sem conversão. Os recursos SRI locais são processados antes do HTML, e depois os metadados SHA-256/384/512 são recalculados a partir dos bytes finais em referências de script, folha de estilos, preload e template. Os hashes correspondentes de scripts externos em políticas CSP acessíveis também são atualizados. Os recursos partilhados são mantidos inalterados com um aviso de DRM se alguma página referenciadora tiver CSP indisponível ou não puder ser reescrita com segurança como UTF-8. Os metadados SRI inválidos permanecem bloqueados; os recursos alojados externamente não são reescritos.
O DRM adiciona classes aleatórias a atributos class existentes e dois atributos inertes aleatórios em torno de cada atributo real de tags HTML comuns elegíveis. Os nomes aleatórios são verificados contra o texto fonte de HTML, CSS e JS. Os seletores de igualdade/substring de classe preservam os valores de classe afetados; a análise AST delimita a inspeção de classes/atributos a elementos identificados estaticamente, aliases imutáveis e subárvores de observadores, usando cada página e as suas dependências locais de JS/CSS. Os elementos não relacionados continuam a receber ruído. Recetores desconhecidos, seletores em tempo de execução, desestruturação e observadores não resolvidos usam um fallback conservador e imprimem avisos. Tags script/style/meta/noscript, elementos personalizados e nós SVG/MathML estrangeiros não recebem atributos inúteis. Estas proteções cobrem dependências conhecidas; seletores calculados dinamicamente ou reflexão nem sempre podem ser inferidos estaticamente.
No modo DRM, o WSC extrai automaticamente JavaScript inline elegível para arquivos ofuscados wsc-inline-*.js ao lado de cada documento HTML quando uma configuração CSP suportada se aplica: _headers na raiz, vercel.json na raiz (regras headers), ou uma meta tag CSP no HTML. Ele adiciona 'self' a script-src-elem na política de saída, preservando outras permissões de origem, regras script-src para manipuladores de eventos e diretivas não relacionadas. Isso amplia intencionalmente as permissões de script para arquivos da mesma origem. Implante o JavaScript emitido e a configuração de cabeçalho junto com o HTML. Nonces permanecem inalterados; os arquivos gerados incluem hashes SRI. Rotas literais e curingas * são suportados.
As tags de script geradas permanecem em suas posições originais. Scripts clássicos permanecem bloqueadores do parser; atributos inline async/defer ignorados são removidos ao adicionar src. Módulos mantêm seus atributos, e os arquivos são emitidos ao lado do documento para preservar a resolução de importações relativas. Mapas de importação, scripts de dados, estilos e manipuladores de eventos permanecem inline.