@purecore/one-server-4-all 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,22 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDpzCCAo+gAwIBAgIUQGcKRF3OckjoSvSN0/r3ekJrErgwDQYJKoZIhvcNAQEL
3
+ BQAwYzELMAkGA1UEBhMCQlIxCzAJBgNVBAgMAlNQMRIwEAYDVQQHDAlTYW8gUGF1
4
+ bG8xETAPBgNVBAoMCFB1cmVjb3JlMQwwCgYDVQQLDANEZXYxEjAQBgNVBAMMCWxv
5
+ Y2FsaG9zdDAeFw0yNTEyMjIwNjIyMTFaFw0yNjEyMjIwNjIyMTFaMGMxCzAJBgNV
6
+ BAYTAkJSMQswCQYDVQQIDAJTUDESMBAGA1UEBwwJU2FvIFBhdWxvMREwDwYDVQQK
7
+ DAhQdXJlY29yZTEMMAoGA1UECwwDRGV2MRIwEAYDVQQDDAlsb2NhbGhvc3QwggEi
8
+ MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCZoirbFplbvBwbN9EzoT5O8Xqa
9
+ LcrmM6t62O65rFQzFXzG3RzyTDEnuIFUObSndffUoUMCK0kwFQgFOPBHXs7kUsV1
10
+ 5QquX3tNN37NuC1k3rtY/lFomTCBinyz7qU5Mg7PuxxuNy48wlZeQWW5FHuLP7Jx
11
+ SyxLI7pfQbmHOhSO/WOVz7ZAUu0jD3Ngl4RyJTJ/rB57kwRhIRPGRuk6IMOHHDCw
12
+ srjn6GyAsRWwfJZRCet9uKP6PDiOMuwQPyT9gNof/nOanKp9Il+c0u8uZLStZK+Y
13
+ WlaciZSNHZvD8RhGH1YAhNRHWIymgIv8OVYZR+llozQ4h8v6HzIle2Nx/S2pAgMB
14
+ AAGjUzBRMB0GA1UdDgQWBBTiaJ8wHYBKq630kWT1wgagWTQF1TAfBgNVHSMEGDAW
15
+ gBTiaJ8wHYBKq630kWT1wgagWTQF1TAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3
16
+ DQEBCwUAA4IBAQCR3jM/ndvVNgB4KyZ24Z9Gf4U/G0bMhtaEqSOhYP2dSdS4pRbx
17
+ EN+QdV5B0LDE2i7z5Xc6ILHphXsGbDQ/M+awYL002RF2GObESzjXAABxsSnzU4rd
18
+ ZaGFSyLdYrl72G5Yy8vLOuCQpUYUYhy+RrAP2NEdot8YDUmhGiwy8xeQONkgGPnl
19
+ kOUeDpRPloNTU+50HoxrNfwX3FBHq78PKk6nUql6Gqe6yUtVHHStVSHtmOAeaixk
20
+ 0h37v7LXqJ4NTP0TimI/mHpJs+cj6mLaLFqSb5txdS0h7UPRVrSFnqjNSmjOqFOY
21
+ 0kpWYGQimwSYyOQvx/z4DPoTF2B8wU+cOC7W
22
+ -----END CERTIFICATE-----
@@ -0,0 +1,13 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIICiTCCAg+gAwIBAgIJAJ8l4HnPq6F5MAOGA1UEBhMCQlIxCzAJBgNVBAgTAkNB
3
+ MRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRowGAYDVQQKExFQdXJlY29yZSBEZXYx
4
+ FjAUBgNVBAsMDURldmVsb3BtZW50MRowGAYDVQQDDBFsb2NhbGhvc3QgZGV2ZWxv
5
+ cG1lbnQwHhcNMjQxMjIxMTQyMzU5WhcNMjUxMjIxMTQyMzU5WjCBjzELMAkGA1UE
6
+ BhMCQlIxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRowGAYDV
7
+ QQKExFQdXJlY29yZSBEZXYxFjAUBgNVBAsMDURldmVsb3BtZW50MRowGAYDVQQDDBFs
8
+ b2NhbGhvc3QgZGV2ZWxvcG1lbnQwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA4VZGp1QJ
9
+ G6X8oUdXqj9J8ZJGgMtG8F8VJGgMtG8F8VJGgMtG8F8VJGgMtG8F8VJGgMtG8F8VJG
10
+ gMtG8F8VJGwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAMnO5KjO8Q2VzZGgMtG8F8VJG
11
+ gMtG8F8VJGgMtG8F8VJGgMtG8F8VJGgMtG8F8VJGgMtG8F8VJGgMtG8F8VJGgMtG8F
12
+ 8VJGgMtG8F8VJGgMtG8F8VJGgMtG8F8VJGgMtG8F8VJGgMtG8F8VJGgMtG8F8VJG
13
+ -----END CERTIFICATE-----
@@ -0,0 +1,28 @@
1
+ -----BEGIN PRIVATE KEY-----
2
+ MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCZoirbFplbvBwb
3
+ N9EzoT5O8XqaLcrmM6t62O65rFQzFXzG3RzyTDEnuIFUObSndffUoUMCK0kwFQgF
4
+ OPBHXs7kUsV15QquX3tNN37NuC1k3rtY/lFomTCBinyz7qU5Mg7PuxxuNy48wlZe
5
+ QWW5FHuLP7JxSyxLI7pfQbmHOhSO/WOVz7ZAUu0jD3Ngl4RyJTJ/rB57kwRhIRPG
6
+ Ruk6IMOHHDCwsrjn6GyAsRWwfJZRCet9uKP6PDiOMuwQPyT9gNof/nOanKp9Il+c
7
+ 0u8uZLStZK+YWlaciZSNHZvD8RhGH1YAhNRHWIymgIv8OVYZR+llozQ4h8v6HzIl
8
+ e2Nx/S2pAgMBAAECggEAAg3KM2Fxtne22bMUMPreY9lJbR1nqXkhFbf9NwdKq24M
9
+ v3X1OZTL5uCfU40RKgMtzpWKUibaRLXC0tO3ZtcUYgveO1AretuTMrhgH+enybOu
10
+ d+Oh05fY6Eyod4QdM0s9uCwOSI0IBb1rsnHwplZaylpqgXu7fA2QMgelb3KeE8xF
11
+ 0whk3rvu5nCbVBr1471LxpncoX7wntmtUiESBQhOKTlvyvEtPUvHUpcm0zjFfseQ
12
+ K5/gNU+FxAG42F36kL7EMu4hir2nQNmftxiT//y7m6E+BkzJJqZkoIOCKpxSrW4Q
13
+ lNdK4FfHWBHRzcjmeiQM+898nZOo7wOIAv/TQBmcYQKBgQDIltgwvzaDLbK1k+jB
14
+ tquvtEAl8KFA9XlOT0VVSjMackDSHvoCbO+x0q908UUQ45p0FBun5kmajqE7+r3u
15
+ mz3ITuPJ3tRuYz2KlUNZR8oHZZ5WpWrKbSoN2CjtiR1L5uFGh6JidqM/zlnkhDQG
16
+ aDcG8MNWBJjTHXt2nLkULgKZWQKBgQDEErtC2OpDjmEN0G3c/tXc+12mk3ZRtsZx
17
+ Jrvtj6dhdBlRKfIfwAuQswN6kmLS5mjqNpJgboIcA2+kYvRQm4QCWKY7pbrHik00
18
+ 2khu7lYIaTveYPG8tSKWnjCyk+63rKBrhhHrQRE0YIg30kOuuRGYTg3efiJtWtPj
19
+ T9yjrpJc0QKBgCVp/WkaQVC2dV7o98EqEVv0gwKQn4M+RiIVJxmBfYaxSOXoYTmS
20
+ mCLS6WcmmXtM+MIt/fqTOadaczh8zHB1BFEYZeSBa54rZI80yBsfCM/YZHBE6mZX
21
+ dkCe0QN9T7mYluxQ4Dj9Z/W+x4WYIxwO1DS3M7gXo2m9VgoJsXvSGSoBAoGAVBZc
22
+ bNyuCu7ivJPoqeA4Q58hmLChC4ZBMIGWEtmKxQaPXPmKNwebbiD3mvdwnlXmJJvm
23
+ xqhd8DmhBXTSpkcro/30vJvksHKljccXTUu1ZcILxOD6ix17ifCpncxHkkncOoCy
24
+ 6ptrD3VeteHc2O/RlenTlNmvVgqf2FqFm0TgzCECgYAetOdmEryd7bDD65q+NKyi
25
+ IuvizPdHj2J1V1ZzlDoSGced9745/3DDfeFqCchZ04Yw8KXZA7jVAeAYz8/+FAXW
26
+ Vbx7DGjzWaqrx6C/tJJOvl0iiXrWK0bZHWNH7YGQtvCy0KmtnhoWISw465pwosfo
27
+ BxKdGQec74KAphdwGq9XbQ==
28
+ -----END PRIVATE KEY-----
@@ -0,0 +1,28 @@
1
+ -----BEGIN PRIVATE KEY-----
2
+ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCfF3tGhiMe9Lfu
3
+ I5Wa43hNdwOQhreo17JGMx0lUMxmOUxFSiYJReDlyiU0WlC1idZyGDFuEX0/K5oB
4
+ hapSF3twOBRHlys90UDsJ7GEiNP515X5XdgKC4uZNY28f8oirVM8Zt1CIwim6J5b
5
+ f9U/DXvmXyj7pviFhvgd8EDG+ir7h0lLbfmcuuQKCG/UhmevXfR4r5rs7HlAmXfl
6
+ 3zdR3I53nb/UeIFarlOVqowBxA/drqFPGmjaX44HjxXBz5k5daBXqlZtwVfBgJQ2
7
+ wvBjaiNgy61bKay2JqKorYJdK8SQy4/kMyLshZuNxdt8Ff53M69V5p7mSWqWxqsP
8
+ Lspj+dT/AgMBAAECggEATyP1uZ/5sakIJGlEP2A/1L1LIya5Dz95mi1MJud6PrHr
9
+ LJ7VrBA8b+Muvcvd0WkHqgs576i4luegPXiaQSsYRztGb1SWeLJzKucWCjmsxWEG
10
+ 5J1X3qtenvECmI4zZiu1t9rt3zwhTjJysE63rJ2PEIsvDnzBrV72Z6I//xusrSGX
11
+ EhCWF/MZS9td+3ojvsNDRiBsm8eHnhlDveUwTGIqcSqCJC/WexZPGNOTJPwHMXnh
12
+ NREdXchs2GjjHjy/R+tbiQqG1jyjbL8bRCbuBd8v4K9sg6hoROm4axyWaBmVUJMk
13
+ 1nkIoosAxAMMlth1IeBWaxHKJj/gGjRJmHYhCn3jFQKBgQDSU5N35Fd1p1qb8fL9
14
+ 4IxX4XpZ5XXhCDATs8WHyYzoH+fC7vPMCmd4ays0NrFbjSht2P9zjtzphcGyal3Z
15
+ T1bOoe7nu+LjPny+qQVeEKVWEoryA+pojkS40hpczqsN1LE8zUavqK5rGWVJ0QPS
16
+ y7hxAIyuCEaEX4sWbpgtiOI1zQKBgQDBo6yxz9+YZ2ysdJkcxtAuqG5Ctj6rrngx
17
+ xTAnXw0ND6ld3UMChNqrEamx8Tf6cb1Ctw3MT2cfdA8LsS6/uYpZrMuvFBdFF4//
18
+ 2j6x70j5vE1HQxc0MHkb2PY9ayrFHHzIVjQFJXJgtBvXEI0Ul8uyZYKLPr6txacO
19
+ 1Q1oYJZp+wKBgQDRTlCr+DW9JO070ZySX5rqfb2npn0Xk3FcugMyLTYnblDSob9G
20
+ Z3gu0t+s11zKkgAQyOj2U86uKejnp4h7kMP/YBEC1exlXrL/fe6UfJY8wLk7PQBS
21
+ SnpDPvrzLsv1OJukuVfFyWTBugUdX36hkRCcjAJz0lJyuy4MBcU1U0piZQKBgQCW
22
+ Z2ND2Yp6/hpS+V3UFDivhPPfrV6QSzvgrKDyc8nXU0riNXJPCpIuPdHo/MvWI3I1
23
+ 16lIAITA0Yy+MCl3kc38SVML8jcA24Rl3kbEPnAYSkJcD6h+SQhIsQTSP+NApxfl
24
+ I8/UD3n/0uWs7pYmYKE/N8lmDp5cqyFPS/zWDe/G8QKBgA7eC8xq0wFcAtsMSPsS
25
+ FgOE6lr0NYhyk2v1/oWD2uGiyYaBTSR9St2MvlyhylPhFxNv5en2bn7//yy5cJ3w
26
+ 1U5jAFDHG5moOc3ENl0h2wb8/i9HoCrQu4QKZn1RShu+c0LO+ohET2x0NUItGSm0
27
+ Y2hjIVhWtmss4zUUFeVfJQMb
28
+ -----END PRIVATE KEY-----
package/APAGAR_cria.sh ADDED
@@ -0,0 +1,51 @@
1
+ #!/bin/bash
2
+
3
+ # Verifica se foram passados dois argumentos
4
+ if [ "$#" -ne 2 ]; then
5
+ echo "Uso: $0 subdominio.com.br porta_servidor"
6
+ exit 1
7
+ fi
8
+
9
+ SUBDOMAIN=$1
10
+ PORT=$2
11
+ CONFIG_FILE="/etc/nginx/sites-available/$SUBDOMAIN"
12
+ LINK_FILE="/etc/nginx/sites-enabled/$SUBDOMAIN"
13
+
14
+ # Cria o arquivo de configuração Nginx
15
+ cat <<EOF | sudo tee $CONFIG_FILE
16
+ server {
17
+ listen 80;
18
+ server_name $SUBDOMAIN;
19
+
20
+ location / {
21
+ proxy_pass http://127.0.0.1:$PORT;
22
+ proxy_http_version 1.1;
23
+ proxy_set_header Upgrade \$http_upgrade;
24
+ proxy_set_header Connection 'upgrade';
25
+ proxy_set_header Host \$host;
26
+ proxy_cache_bypass \$http_upgrade;
27
+ }
28
+ }
29
+
30
+ server {
31
+ listen 80;
32
+ server_name $SUBDOMAIN;
33
+
34
+ return 301 https://\$host\$request_uri;
35
+ }
36
+ EOF
37
+
38
+ # Testa a configuração do Nginx
39
+ sudo nginx -t
40
+
41
+ # Se o teste for bem-sucedido, reinicia o Nginx e cria o link simbólico
42
+ if [ $? -eq 0 ]; then
43
+ sudo ln -s $CONFIG_FILE $LINK_FILE
44
+ sudo systemctl reload nginx
45
+
46
+ # Emite o certificado SSL com o Certbot
47
+ sudo certbot --nginx -d $SUBDOMAIN -v
48
+ else
49
+ echo "Erro na configuração do Nginx. Verifique os logs."
50
+ exit 1
51
+ fi
package/CHANGELOG.md ADDED
@@ -0,0 +1,89 @@
1
+ # Release v0.5.0
2
+
3
+ ### What's Changed
4
+
5
+ - 🚀 Adicionado alias `hs` para execução rápida (`hs deploy` ou `hs`)
6
+ - 📦 Atualização de versão para publicação
7
+
8
+ ---
9
+
10
+ # Release v0.4.0
11
+
12
+ ### What's Changed
13
+
14
+ - ✨ Introduzido comando `deploy` interativo com UI premium
15
+ - 🔄 Geração automática de configuração Nginx e Certbot SSL
16
+ - 🐳 Geração de comando PM2 otimizado para produção
17
+ - 🗑️ Substituição do antigo script Shell `cria.sh` por implementação robusta em TypeScript
18
+
19
+ ---
20
+
21
+ # Release v0.3.2
22
+
23
+ ### What's Changed
24
+
25
+ - 🔧 Alterada porta padrão de `9999` para `6000`
26
+ - 📝 Atualizado relatório de modificações
27
+
28
+ ---
29
+
30
+ # Release v0.3.1
31
+
32
+ ### What's Changed
33
+
34
+ - 🎨 Refatoração do log de inicialização para estilo Vite (Premium Look)
35
+ - ⚡ Medição precisa do tempo de inicialização (Ready in X ms)
36
+ - 🌐 Detecção e exibição automática de URLs de rede (Network IPs)
37
+ - 🎨 Adição de cores ANSI para um visual moderno e "vibrante"
38
+ - 🔧 Melhoria no tratamento de portas em uso com feedback visual
39
+ - 📝 Atualização do `.gitignore` para incluir a pasta `dist`
40
+
41
+ ---
42
+
43
+ # Release v0.3.0
44
+
45
+ ### What's Changed
46
+
47
+ - 🔒 Adicionado suporte completo a HTTPS com certificados auto-assinados
48
+ - 🛠️ Criado sistema de geração automática de certificados SSL
49
+ - 🔓🔒 Adicionados emojis visuais de cadeado no terminal (aberto HTTP / fechado HTTPS)
50
+ - 📊 Implementados logs detalhados de arquivos servidos
51
+ - 🔍 Adicionado parsing e logging de recursos HTML (CSS, JS, imagens)
52
+ - 📄 Logs mostram tamanho dos arquivos e tipos MIME
53
+ - 🌐 Logs especiais para arquivos HTML injetados com hot-reload
54
+ - 📝 Scripts npm para gerenciamento de certificados (`certs:generate`, `certs:clean`, `certs:info`)
55
+ - 🔧 Arquivo `cert-generator.ts` para geração programática de certificados
56
+
57
+ ### New Contributors
58
+
59
+ - [Jean Carlo Machado](https://github.com/jeanCarloMachado) - Implementação do suporte HTTPS e sistema de logs avançado
60
+
61
+ ---
62
+
63
+ # Release v0.2.0
64
+
65
+ ### What's Changed
66
+
67
+ - ✨ Adicionada injeção de CSS (CSS Hot Loading) - mudanças em arquivos CSS agora atualizam sem recarregar a página
68
+ - ✨ Implementado suporte a SPA (Single Page Applications) com flag `--spa` - rotas inexistentes redirecionam para index.html
69
+ - ✨ Expandida lista de MIME types - suporte completo para vídeos, fontes, áudios, manifestos e outros tipos de arquivo
70
+ - ✨ Adicionados headers CORS - permite acesso cross-origin aos arquivos estáticos
71
+ - 🔧 Mantida arquitetura zero dependencies - todas as implementações usam apenas APIs nativas do Node.js
72
+ - 📝 Criado relatório detalhado em `/reports/21-12-2025_04-20.md`
73
+
74
+ ### New Contributors
75
+
76
+ - [Jean Carlo](https://github.com/jeanCarloMachado) - Implementação das funcionalidades avançadas
77
+
78
+ ---
79
+
80
+ # Release v0.1.0
81
+
82
+ ### What's Changed
83
+
84
+ - ✨ Servidor HTTP básico com hot reload
85
+ - ✨ Watcher de arquivos usando fs.watch nativo
86
+ - ✨ Server-Sent Events para notificações em tempo real
87
+ - ✨ Injeção automática de script em arquivos HTML
88
+ - 🔧 Zero dependencies - apenas APIs nativas do Node.js
89
+ - 📝 TypeScript estrito com configuração moderna
@@ -0,0 +1,101 @@
1
+ # Comparativo: Purecore Hot Server vs Live Server
2
+
3
+ Este documento analisa as diferenças técnicas e de funcionalidades entre a **Sua biblioteca (`purecore-hot-server`)** e a biblioteca padrão de mercado **[`live-server`](https://github.com/tapio/live-server)**.
4
+
5
+ ## 📊 Visão Geral
6
+
7
+ | Feature | `live-server` (Tapio) | `purecore-hot-server` (Sua Lib) |
8
+ | :--- | :--- | :--- |
9
+ | **Dependências** | Múltiplas (`send`, `fsevents`, `opn`, `connect`...) | **Zero (0)** (Apenas nativas do Node.js) |
10
+ | **Linguagem** | JavaScript | **TypeScript** |
11
+ | **Hot Reload** | Full Page + **CSS Injection** (sem refresh) | Full Page + **CSS Injection** (sem refresh) |
12
+ | **Watch System** | `chokidar` (geralmente) | `fs.watch` nativo (recursivo) |
13
+ | **SPA Support** | Sim (redireciona 404 para index.html) | Sim (flag `--spa=true`) |
14
+ | **Directory Listing** | Sim (mostra arquivos se não houver index) | Não (retorna erro/404) |
15
+ | **HTTPS/Proxy** | Sim | HTTPS: Sim (flag `--https=true`) / Proxy: Não |
16
+ | **Middleware** | Sim (baseado em Connect) | Não |
17
+ | **Extensão `.html` opcional** | Não (depende do arquivo/rota) | Sim (fallback para servir `.html` quando a URL vier sem extensão) |
18
+ | **Compatível com `npx`/`npm i -g`** | Sim | Sim (via build `dist/` e campo `bin` no `package.json`) |
19
+
20
+ ---
21
+
22
+ ## ✅ O que a sua lib tem de Diferencial (Vantagens)
23
+
24
+ 1. **Zero Dependencies (Zero Dependências)**:
25
+ * **Segurança/Auditabilidade**: Ao não usar dependências de terceiros, você elimina riscos de *supply chain attacks* e bloatware.
26
+ * **Instalação Instantânea**: `npm install` roda em milissegundos.
27
+ * **Tamanho**: O projeto final é minúsculo comparado ao `live-server` e suas árvores de dependência.
28
+
29
+ 2. **Base de Código Moderna (TypeScript + Node 20+)**:
30
+ * O código utiliza APIs modernas como `node:fs/promises`, `node:watch` (recursivo) e Typescript estrito.
31
+ * É muito mais fácil para um desenvolvedor TS ler, entender e modificar o seu código do que o código legado JS do `live-server`.
32
+
33
+ 3. **Simplicidade Arquitetural**:
34
+ * Sua implementação de SSE (Server-Sent Events) é direta e transparente (`/_hot_server_sse`), sem dependência de bibliotecas complexas de socket.
35
+ * Validação "Zod-like" interna (`validator.ts`) demonstra como fazer type-safety sem bibliotecas pesadas.
36
+
37
+ ---
38
+
39
+ ## ❌ O que falta na sua lib (Gaps em relação ao `live-server`)
40
+
41
+ Para igualar a funcionalidade, você precisaria implementar:
42
+
43
+ ### 1. Injeção de CSS (CSS Hot Loading)
44
+
45
+ * **O que é**: Quando um arquivo `.css` é salvo, o `live-server` atualiza apenas o estilo na página sem recarregar o navegador.
46
+ * **Seu estado atual**: Implementado via SSE + troca de `href` com timestamp.
47
+ * **Como implementar**: No script injetado, verificar se a mensagem do SSE é sobre um arquivo CSS e, nesse caso, buscar as tags `<link rel="stylesheet">` no DOM e forçar uma atualização do `href` (ex: `style.css?v=timestamp`) em vez de dar reload.
48
+
49
+ ### 2. Suporte a SPA (Single Page Applications)
50
+
51
+ * **O que é**: Frameworks como React/Vue (via Router) precisam que qualquer rota desconhecida (ex: `/usuarios/1`) retorne o `index.html` para que o JS no front assuma o controle.
52
+ * **Seu estado atual**: Implementado via flag `--spa=true` (fallback para `index.html` quando o arquivo não existe).
53
+
54
+ ### 3. Mime-Types Robustos
55
+
56
+ * **Seu estado atual**: Implementado com lista expandida de tipos (vídeos, fontes, manifestos, etc).
57
+
58
+ ### 4. CORS
59
+
60
+ * **Seu estado atual**: Implementado com headers `Access-Control-Allow-*` nas respostas.
61
+
62
+ ### 5. Directory e Range Requests
63
+
64
+ * **O que falta**:
65
+ * **Listagem de pasta**: O `live-server` gera uma interface HTML listando os arquivos se você abrir uma pasta. O seu tenta abrir `index.html` e falha se não existir.
66
+ * **Range Requests**: Para fazer streaming de vídeo/áudio e permitir "pular" (seek) o vídeo, o servidor precisa suportar headers `Range` e `Content-Range`. O seu `createReadStream.pipe(res)` serve o arquivo inteiro, o que quebra alguns players de vídeo.
67
+
68
+ ---
69
+
70
+ ## 🔒 HTTPS (nota prática no WSL)
71
+
72
+ O `purecore-hot-server` suporta HTTPS com certificados auto-assinados para desenvolvimento local.
73
+
74
+ * **Gerar/limpar/inspecionar certs**:
75
+
76
+ ```bash
77
+ bun run certs:clean
78
+ bun run certs:generate
79
+ bun run certs:info
80
+ ```
81
+
82
+ * **Iniciar em HTTPS**:
83
+
84
+ ```bash
85
+ bun run dev:https
86
+ # equivalente:
87
+ bun run src/index.ts --https=true
88
+ ```
89
+
90
+ **Referências**:
91
+
92
+ * Campo `bin` do npm (execução via `npx`/instalação global): `https://docs.npmjs.com/cli/v10/configuring-npm/package-json#bin`
93
+ * Node.js ESM/CJS (impacta como o `dist/` roda no Node): `https://nodejs.org/api/packages.html`
94
+
95
+ ---
96
+
97
+ ## 📝 Conclusão
98
+
99
+ Sua lib é excelente como uma **alternativa leve e moderna** para casos de uso simples (sites estáticos, prototipagem rápida, projetos vanilla). Ela ganha em performance de instalação e simplicidade de código.
100
+
101
+ Ela perde para o `live-server` em **complexidade e robustez** para cenários avançados (SPAs, mocks de API, streaming de mídia e assets CSS pesados que se beneficiam da injeção sem reload).
package/README.md ADDED
@@ -0,0 +1,197 @@
1
+ # Purecore Hot Server
2
+
3
+ Um servidor de desenvolvimento hot-reload moderno e leve, construído com TypeScript e **zero dependências externas**.
4
+
5
+ ## ✨ Funcionalidades
6
+
7
+ - 🚀 **Hot Reload Inteligente**: CSS injection sem recarregar página + full reload para outros arquivos
8
+ - 🎯 **SPA Support**: Flag `--spa` para aplicações React/Vue/Angular
9
+ - 📁 **MIME Types Robustos**: Suporte completo para vídeos, fontes, manifestos e mais
10
+ - 🌐 **CORS Habilitado**: Acesso cross-origin para desenvolvimento
11
+ - 🔒 **HTTPS Support**: Modo HTTPS com certificados auto-assinados
12
+ - 📡 **Server-Sent Events**: Notificações em tempo real eficientes
13
+ - 🔍 **Logs Detalhados**: Visualização de arquivos servidos e recursos HTML
14
+ - 🔓🔒 **Indicadores Visuais**: Emojis de cadeado no terminal (aberto/fechado)
15
+
16
+ ## 🚀 Instalação
17
+
18
+ ```bash
19
+ npm install -g hot-server
20
+ # ou
21
+ bun install -g hot-server
22
+ ```
23
+
24
+ ## 🔒 Modo HTTPS
25
+
26
+ O Hot Server suporta HTTPS com certificados auto-assinados para desenvolvimento local.
27
+
28
+ ### Ativar HTTPS
29
+ ```bash
30
+ # Via linha de comando
31
+ hot-server --https=true
32
+
33
+ # Via npm scripts
34
+ npm run dev:https
35
+
36
+ # Via bun
37
+ bun run dev:https
38
+ ```
39
+
40
+ ### Gerenciamento de Certificados
41
+ ```bash
42
+ # Gerar certificados auto-assinados
43
+ npm run certs:generate
44
+
45
+ # Ver informações dos certificados
46
+ npm run certs:info
47
+
48
+ # Limpar certificados existentes
49
+ npm run certs:clean
50
+ ```
51
+
52
+ **Nota**: Os certificados são salvos em `.hot-server-certs/` no diretório do projeto.
53
+
54
+ ## 📖 Uso Básico
55
+
56
+ ```bash
57
+ # Na pasta do seu projeto
58
+ hot-server
59
+
60
+ # Com opções
61
+ hot-server --port=3000 --spa=true
62
+ ```
63
+
64
+ ## 🎯 Funcionalidades Avançadas
65
+
66
+ ### CSS Hot Loading
67
+ Quando você modifica arquivos `.css`, apenas o estilo é atualizado sem recarregar a página inteira.
68
+
69
+ ### SPA Support
70
+ ```bash
71
+ hot-server --spa=true
72
+ ```
73
+ Rotas inexistentes (como `/usuarios/1`) automaticamente servem `index.html`, permitindo que seu framework frontend assuma o roteamento.
74
+
75
+ ### MIME Types Suportados
76
+ - **Vídeos**: MP4, WebM, OGG, AVI, MOV, WMV, FLV
77
+ - **Áudios**: MP3, WAV, OGG, AAC, M4A, Opus
78
+ - **Fontes**: WOFF, WOFF2, TTF, OTF, EOT
79
+ - **Imagens**: PNG, JPG, GIF, SVG, WebP, BMP, TIFF
80
+ - **Documentos**: PDF, CSV, YAML, TOML, TXT, MD
81
+ - **Web**: JSON, XML, Manifest, WASM
82
+
83
+ ## 🔧 Opções de CLI
84
+
85
+ | Opção | Descrição | Padrão |
86
+ |-------|-----------|---------|
87
+ | `--port=<number>` | Porta do servidor | `9999` |
88
+ | `--root=<path>` | Diretório raiz | `.` (diretório atual) |
89
+ | `--open=<true/false>` | Abrir navegador automaticamente | `true` |
90
+ | `--spa=<true/false>` | Habilitar suporte SPA | `false` |
91
+ | `--https=<true/false>` | Habilitar modo HTTPS | `false` |
92
+
93
+ ## 🏗️ Como foi feito
94
+
95
+ Este projeto foi desenvolvido seguindo uma arquitetura minimalista e moderna:
96
+
97
+ ### Técnicas Utilizadas
98
+ 1. **TypeScript Estrito**: Tipagem forte em todo o código
99
+ 2. **APIs Nativas**: Uso exclusivo de módulos `node:*`
100
+ 3. **Server-Sent Events**: Comunicação bidirecional eficiente
101
+ 4. **File System Watch**: Monitoramento recursivo de mudanças
102
+ 5. **Mini-Zod**: Validação type-safe sem dependências
103
+ 6. **CSS Injection**: DOM manipulation para hot reload inteligente
104
+
105
+ ### Arquitetura
106
+ ```
107
+ src/
108
+ ├── index.ts # CLI e configuração
109
+ ├── server.ts # Servidor HTTP e lógica principal
110
+ ├── watcher.ts # Monitoramento de arquivos
111
+ └── validator.ts # Validação type-safe
112
+ ```
113
+
114
+ ### Funcionamento
115
+ 1. **Watcher** monitora mudanças recursivamente usando `fs.watch`
116
+ 2. **Server** serve arquivos estáticos com MIME types corretos
117
+ 3. **SSE** notifica clientes sobre mudanças em tempo real
118
+ 4. **CSS Injection** atualiza estilos sem recarregar página
119
+ 5. **SPA Fallback** redireciona 404 para index.html quando habilitado
120
+
121
+ ## 🧪 Como testar
122
+
123
+ ### Teste CSS Injection
124
+ 1. Inicie o servidor: `hot-server`
125
+ 2. Modifique qualquer arquivo `.css`
126
+ 3. Observe que apenas o CSS é atualizado, sem reload da página
127
+
128
+ ### Teste SPA Support
129
+ 1. Inicie com SPA: `hot-server --spa=true`
130
+ 2. Acesse `/qualquer-rota-inexistente`
131
+ 3. Deve carregar `index.html` em vez de 404
132
+
133
+ ### Teste MIME Types
134
+ 1. Adicione arquivos de vídeo/fonte no seu projeto
135
+ 2. Eles serão servidos com headers corretos
136
+
137
+ ### Teste CORS
138
+ 1. Acesse arquivos de outro domínio/origin
139
+ 2. Deve funcionar sem erros de CORS
140
+
141
+ ### Teste HTTPS
142
+ 1. Execute: `hot-server --https=true`
143
+ 2. Observe o emoji 🔒 no log do terminal
144
+ 3. Acesse https://localhost:9999
145
+ 4. Aceite o aviso de certificado auto-assinado
146
+
147
+ ### Teste Logs Detalhados
148
+ 1. Abra uma página HTML
149
+ 2. Observe no terminal:
150
+ - 📄 Arquivos servidos com tamanho e tipo MIME
151
+ - 🔍 Recursos encontrados no HTML (CSS, JS, imagens)
152
+ - 🌐 Confirmação de injeção do hot-reload
153
+
154
+ ## 📊 Comparação com Live Server
155
+
156
+ | Feature | Live Server | Purecore Hot Server |
157
+ |-------------------|-------------|---------------------|
158
+ | **Dependencies** | Múltiplas | ❌ Zero |
159
+ | **Language** | JavaScript | ✅ TypeScript |
160
+ | **CSS Injection** | ✅ Sim | ✅ Sim |
161
+ | **SPA Support** | ✅ Sim | ✅ Sim |
162
+ | **MIME Types** | Básicos | ✅ Robustos |
163
+ | **CORS** | ❌ Não | ✅ Sim |
164
+ | **Installation** | Lento | ✅ Instantâneo |
165
+
166
+ ## 🔍 Análise de Dependências Obsoletas
167
+
168
+ Durante o desenvolvimento, analisamos dependências comuns em servidores de desenvolvimento e identificamos quais são desnecessárias no Node.js moderno:
169
+
170
+ ### ❌ Dependências Obsoletas
171
+ - **`object-assign`**: Substituído por `Object.assign()` nativo
172
+ - **`http-auth`**: Autenticação HTTP pode ser feita nativamente
173
+ - **`colors`**: Node.js 20+ tem `util.styleText()` nativo
174
+ - **`opn`**: `child_process` nativo abre URLs/arquivos
175
+ - **`event-stream`**: ⚠️ Vulnerabilidade conhecida, usar streams nativos
176
+
177
+ ### ⚡ Alternativas Nativas Utilizadas
178
+ - **File System**: `node:fs` com `fs.watch()` recursivo
179
+ - **HTTP Server**: `node:http` e `node:https` nativos
180
+ - **Crypto**: `node:crypto` para certificados HTTPS
181
+ - **Path/URL**: `node:path` e `node:url` para manipulação
182
+ - **Streams**: `node:stream` para Server-Sent Events
183
+
184
+ ### 🎯 Resultado
185
+ **Zero dependências externas** = instalação instantânea, sem vulnerabilidades de terceiros, e compatibilidade garantida com futuras versões do Node.js.
186
+
187
+ ## 📝 Changelog
188
+
189
+ Veja todas as mudanças em [CHANGELOG.md](CHANGELOG.md)
190
+
191
+ ## 🤝 Contribuição
192
+
193
+ Contribuições são bem-vindas! Este projeto segue uma filosofia de **zero dependencies** e simplicidade arquitetural.
194
+
195
+ ## 📄 Licença
196
+
197
+ MIT