hightjs 0.3.0 → 0.3.2

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.
package/README.md CHANGED
@@ -1,10 +1,18 @@
1
- # HightJS
1
+ <div align="center">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="https://repository-images.githubusercontent.com/1069175740/e5c59d3a-e1fd-446c-a89f-785ed08f6a16">
4
+ <img alt="Next.js logo" src="https://repository-images.githubusercontent.com/1069175740/e5c59d3a-e1fd-446c-a89f-785ed08f6a16" height="128">
5
+ </picture>
6
+ <h1>HightJS</h1>
2
7
 
3
- > Um framework web full‑stack moderno para Node.js, focado em simplicidade, DX e velocidade. Bundler via esbuild, hot reload, roteamento automático, APIs, autenticação JWT, CLI e muito mais.
8
+ [![NPM](https://img.shields.io/npm/v/hightjs.svg?style=for-the-badge&labelColor=000000)](https://www.npmjs.com/package/hightjs)
9
+ [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg?style=for-the-badge&labelColor=000000)](./LICENSE)
4
10
 
5
- <br>
6
11
 
7
- [![NPM](https://img.shields.io/npm/v/hightjs.svg?style=for-the-badge&labelColor=000000)](https://www.npmjs.com/package/hightjs)
12
+ </div>
13
+
14
+ > Um framework web full‑stack moderno para Node.js, focado em simplicidade, DX e velocidade. Bundler via esbuild, hot reload, roteamento automático, APIs, autenticação JWT, CLI e muito mais.
15
+ ---
8
16
 
9
17
  # Precisa de ajuda?
10
18
  Caso tenha alguma dúvida, entre em contato por uma das redes abaixo:
@@ -36,7 +44,7 @@ Caso tenha alguma dúvida, entre em contato por uma das redes abaixo:
36
44
  - **Layouts globais** e página 404 customizada
37
45
  - **Metadata** dinâmica por página
38
46
  - **Build inteligente** (single bundle ou chunks)
39
- - **Adapters**: Native, Express, Fastify
47
+ - **SSL integrado** no modo Native (HTTPS out-of-the-box)
40
48
  - **Autenticação** JWT embutida (HWebAuth)
41
49
  - **CLI própria** (`hight`) para dev e produção
42
50
  - **Entrega de estáticos** (`public/`)
@@ -130,7 +138,7 @@ Documentação completa disponível na pasta `docs/`:
130
138
  ### Ferramentas e Configuração
131
139
  - [🛠️ CLI](./docs/cli.md)
132
140
  - [📂 Arquivos Especiais](./docs/arquivos-especiais.md)
133
- - [🧱 Adapters](./docs/adapters.md)
141
+ - [🔌 Integrações](./docs/integracoes.md)
134
142
  - [🔐 Segurança Interna](./docs/seguranca.md)
135
143
  - [♻️ Hot Reload](./docs/hot-reload.md)
136
144
 
package/dist/builder.js CHANGED
@@ -17,7 +17,7 @@
17
17
  */
18
18
  const esbuild = require('esbuild');
19
19
  const path = require('path');
20
- const Console = require("./api/console");
20
+ const Console = require("./api/console").default;
21
21
  const fs = require('fs');
22
22
  // Lista de módulos nativos do Node.js para marcar como externos (apenas os built-ins do Node)
23
23
  const nodeBuiltIns = [
package/dist/hotReload.js CHANGED
@@ -127,7 +127,6 @@ class HotReloadManager {
127
127
  console_1.default.logWithout(console_1.Levels.ERROR, console_1.Colors.BgRed, `WebSocket error: ${error.message}`);
128
128
  this.cleanupClient(ws);
129
129
  });
130
- console_1.default.logWithout(console_1.Levels.INFO, console_1.Colors.BgRed, '🔌 Hot-reload cliente conectado');
131
130
  });
132
131
  }
133
132
  cleanupClient(ws) {
package/docs/README.md CHANGED
@@ -17,7 +17,7 @@ Bem-vindo à documentação completa do HightJS!
17
17
  ### Ferramentas e Configuração
18
18
  - [🛠️ CLI](./cli.md) - Comandos e opções
19
19
  - [📂 Arquivos Especiais](./arquivos-especiais.md) - Arquivos com funções especiais
20
- - [🧱 Adapters](./adapters.md) - Native, Express, Fastify
20
+ - [🔌 Integrações](./integracoes.md) - Como integrar com Express, Fastify e usar SSL
21
21
  - [🔐 Segurança Interna](./seguranca.md) - Proteções nativas
22
22
  - [♻️ Hot Reload](./hot-reload.md) - Desenvolvimento com recarregamento automático
23
23
 
@@ -49,7 +49,6 @@ Quando estiver confortável com o básico, explore:
49
49
  Consulte estas páginas quando precisar de informações específicas:
50
50
 
51
51
  - [Arquivos Especiais](./arquivos-especiais.md) - Todos os arquivos especiais do framework
52
- - [Adapters](./adapters.md) - Diferentes formas de executar seu app
53
52
  - [Segurança Interna](./seguranca.md) - Como o HightJS protege sua aplicação
54
53
  - [Hot Reload](./hot-reload.md) - Como funciona o recarregamento automático
55
54
 
package/docs/cli.md CHANGED
@@ -9,12 +9,64 @@ Comandos principais:
9
9
 
10
10
  ## Opções
11
11
 
12
- - `--port` Porta (default 3000)
13
- - `--hostname` Host (default 0.0.0.0)
12
+ - `--port` ou `-p` Porta (default 3000)
13
+ - `--hostname` ou `-h` Host (default 0.0.0.0)
14
+ - `--framework` Framework: native, express, fastify (default: native)
15
+ - `--ssl` Ativa HTTPS (requer certificados em `./certs/`)
14
16
 
15
- ## Produção
17
+ ## Exemplos
18
+
19
+ ### Desenvolvimento básico
20
+
21
+ ```bash
22
+ npx hight dev
23
+ ```
24
+
25
+ ### Produção com porta customizada
16
26
 
17
27
  ```bash
18
28
  npx hight start -p 8080
19
29
  ```
20
30
 
31
+ ### Com SSL (HTTPS)
32
+
33
+ ```bash
34
+ npx hight start --ssl -p 443
35
+ ```
36
+
37
+ **Requisitos para SSL:**
38
+ - Modo Native (não funciona com Express/Fastify via CLI)
39
+ - Pasta `./certs/` na raiz do projeto
40
+ - Arquivos `cert.pem` e `key.pem` dentro de `./certs/`
41
+
42
+ ```
43
+ projeto/
44
+ certs/
45
+ cert.pem
46
+ key.pem
47
+ src/
48
+ ...
49
+ ```
50
+
51
+ ### Com framework específico
52
+
53
+ ```bash
54
+ # Usando Express
55
+ npx hight dev --framework express
56
+
57
+ # Usando Fastify
58
+ npx hight dev --framework fastify
59
+ ```
60
+
61
+ ---
62
+
63
+ ## 🔐 SSL Integrado
64
+
65
+ O HightJS oferece suporte SSL nativo quando usando o adaptador Native. Para mais detalhes sobre integrações com Express e Fastify, consulte:
66
+
67
+ 👉 [**Guia de Integrações**](./integracoes.md)
68
+
69
+ ---
70
+
71
+ Voltar para a [documentação principal](./README.md)
72
+
@@ -0,0 +1,240 @@
1
+ # 🔌 Integrações
2
+
3
+ O HightJS pode ser usado de três formas diferentes: **Native** (servidor próprio), **Express** ou **Fastify**.
4
+
5
+ ---
6
+
7
+ ## 🚀 Native (Recomendado)
8
+
9
+ O modo nativo não requer dependências extras e oferece todos os recursos do HightJS, incluindo **SSL integrado**.
10
+
11
+ ### Via CLI (Recomendado)
12
+
13
+ A forma recomendada de iniciar o servidor Native é usando a CLI:
14
+
15
+ **Desenvolvimento:**
16
+ ```bash
17
+ npx hight dev
18
+ ```
19
+
20
+ **Produção:**
21
+ ```bash
22
+ npx hight start
23
+ ```
24
+
25
+ **Com SSL:**
26
+ ```bash
27
+ npx hight start --ssl -p 443
28
+ ```
29
+
30
+ **Opções disponíveis:**
31
+ - `--port` ou `-p`: Define a porta (padrão: 3000)
32
+ - `--hostname` ou `-h`: Define o host (padrão: 0.0.0.0)
33
+ - `--ssl`: Ativa HTTPS (requer certificados em `./certs/`)
34
+
35
+ ### Via Código (Alternativa)
36
+
37
+ Se precisar de mais controle programático, você pode inicializar manualmente:
38
+
39
+ **Básico:**
40
+ ```typescript
41
+ import { app } from "hightjs";
42
+
43
+ const hightApp = app({
44
+ port: 3000,
45
+ dev: true
46
+ });
47
+
48
+ hightApp.init();
49
+ ```
50
+
51
+ **Com SSL:**
52
+ ```typescript
53
+ import { app } from "hightjs";
54
+
55
+ const hightApp = app({
56
+ port: 443,
57
+ dev: false,
58
+ ssl: {
59
+ redirectPort: 80,
60
+ key: "./certs/key.pem",
61
+ cert: "./certs/cert.pem"
62
+ }
63
+ });
64
+
65
+ hightApp.init();
66
+ ```
67
+
68
+ **Estrutura de pastas para SSL:**
69
+ ```
70
+ projeto/
71
+ certs/
72
+ cert.pem
73
+ key.pem
74
+ src/
75
+ ...
76
+ ```
77
+
78
+ **Opções SSL:**
79
+ - `key`: Caminho para o arquivo de chave privada
80
+ - `cert`: Caminho para o arquivo de certificado
81
+ - `redirectPort`: Porta HTTP que redirecionará para HTTPS (opcional)
82
+
83
+ ---
84
+
85
+ ## 📦 Express
86
+
87
+ Se você já tem um projeto Express ou prefere usar Express, pode integrar o HightJS facilmente.
88
+
89
+ ### Instalação
90
+
91
+ ```bash
92
+ npm install express
93
+ npm install --save-dev @types/express
94
+ ```
95
+
96
+ ### Uso
97
+
98
+ ```typescript
99
+ import express from 'express';
100
+ import { app } from "hightjs";
101
+
102
+ const port = 3000;
103
+ const dev = true;
104
+
105
+ const expressApp = express();
106
+ const hightApp = app({
107
+ framework: 'express',
108
+ port: port,
109
+ dev: dev
110
+ });
111
+
112
+ hightApp.integrate(expressApp);
113
+
114
+ expressApp.listen(port, () => {
115
+ console.log(`Servidor rodando em http://localhost:${port}`);
116
+ });
117
+ ```
118
+
119
+ ### Com middlewares Express
120
+
121
+ Você pode adicionar middlewares Express normalmente antes da integração:
122
+
123
+ ```typescript
124
+ import express from 'express';
125
+ import { app } from "hightjs";
126
+ import cors from 'cors';
127
+
128
+ const expressApp = express();
129
+
130
+ // Middlewares Express
131
+ expressApp.use(cors());
132
+ expressApp.use(express.json());
133
+
134
+ const hightApp = app({
135
+ framework: 'express',
136
+ port: 3000,
137
+ dev: true
138
+ });
139
+
140
+ hightApp.integrate(expressApp);
141
+
142
+ expressApp.listen(3000);
143
+ ```
144
+
145
+ ---
146
+
147
+ ## ⚡ Fastify
148
+
149
+ Para máxima performance, você pode usar Fastify como base.
150
+
151
+ ### Instalação
152
+
153
+ ```bash
154
+ npm install fastify
155
+ ```
156
+
157
+ ### Uso
158
+
159
+ ```typescript
160
+ import Fastify from 'fastify';
161
+ import { app } from 'hightjs';
162
+
163
+ const port = 3000;
164
+ const dev = true;
165
+
166
+ // Cria o servidor Fastify
167
+ const fastifyApp = Fastify({
168
+ logger: dev // Ativa logs se estiver em modo dev
169
+ });
170
+
171
+ // Cria a instância do HightJS usando Fastify
172
+ const hightApp = app({
173
+ framework: 'fastify',
174
+ port: port,
175
+ dev: dev
176
+ });
177
+
178
+ // Integra o Fastify ao HightJS
179
+ hightApp.integrate(fastifyApp);
180
+
181
+ // Inicia o servidor Fastify
182
+ fastifyApp.listen({ port }, (err, address) => {
183
+ if (err) {
184
+ fastifyApp.log.error(err);
185
+ process.exit(1);
186
+ }
187
+ console.log(`Servidor rodando em ${address}`);
188
+ });
189
+ ```
190
+
191
+ ### Com plugins Fastify
192
+
193
+ Você pode registrar plugins Fastify antes da integração:
194
+
195
+ ```typescript
196
+ import Fastify from 'fastify';
197
+ import { app } from 'hightjs';
198
+ import fastifyCors from '@fastify/cors';
199
+
200
+ const fastifyApp = Fastify({ logger: true });
201
+
202
+ // Registra plugins Fastify
203
+ await fastifyApp.register(fastifyCors, {
204
+ origin: true
205
+ });
206
+
207
+ const hightApp = app({
208
+ framework: 'fastify',
209
+ port: 3000,
210
+ dev: true
211
+ });
212
+
213
+ hightApp.integrate(fastifyApp);
214
+
215
+ fastifyApp.listen({ port: 3000 });
216
+ ```
217
+
218
+ ---
219
+
220
+ ## 🤔 Qual escolher?
221
+
222
+ | Framework | Vantagens | Use quando |
223
+ |-----------|-----------|------------|
224
+ | **Native** | SSL integrado, zero config, sem dependências extras | Projetos novos, quer simplicidade |
225
+ | **Express** | Ecossistema gigante, muitos middlewares | Já usa Express, precisa de middlewares específicos |
226
+ | **Fastify** | Máxima performance, validação schema | Precisa de alta performance, validação avançada |
227
+
228
+ ---
229
+
230
+ ## ⚠️ Notas importantes
231
+
232
+ 1. **SSL só está disponível no modo Native**
233
+ 2. Ao usar Express/Fastify, você gerencia o servidor manualmente
234
+ 3. O HightJS se integra perfeitamente com qualquer framework escolhido
235
+ 4. Todos os recursos do HightJS funcionam em qualquer modo (rotas, WebSocket, auth, etc.)
236
+
237
+ ---
238
+
239
+ Voltar para a [documentação principal](./README.md)
240
+
@@ -0,0 +1,24 @@
1
+ // Arquivo gerado automaticamente pelo hweb
2
+ import route0 from '../src/web/routes/index.tsx';
3
+ import route1 from '../src/web/routes/login.tsx';
4
+ import LayoutComponent from '../src/web/layout.tsx';
5
+
6
+ import DefaultNotFound from '../node_modules/hightjs/src/client/DefaultNotFound.tsx';
7
+
8
+ // Registra os componentes para o cliente
9
+ window.__HWEB_COMPONENTS__ = {
10
+ 'src/web/routes/index.tsx': route0.component || route0.default?.component,
11
+ 'src/web/routes/login.tsx': route1.component || route1.default?.component,
12
+ };
13
+
14
+ // Registra o layout se existir
15
+ window.__HWEB_LAYOUT__ = LayoutComponent.default || LayoutComponent;
16
+
17
+ // Registra o notFound se existir
18
+ window.__HWEB_NOT_FOUND__ = null;
19
+
20
+ // Registra o DefaultNotFound do hweb
21
+ window.__HWEB_DEFAULT_NOT_FOUND__ = DefaultNotFound;
22
+
23
+ // Importa e executa o entry.client.tsx
24
+ import '../node_modules/hightjs/src/client/entry.client.tsx';
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDSTCCAjGgAwIBAgIUEDNwk+twrH227ELWWT9Qn92kOzswDQYJKoZIhvcNAQEL
3
+ BQAwNDELMAkGA1UEBhMCQlIxFTATBgNVBAgMDFPDg8KjbyBQYXVsbzEOMAwGA1UE
4
+ CgwFSGlnaHQwHhcNMjUxMDI2MTY0NDM2WhcNMjYxMDI2MTY0NDM2WjA0MQswCQYD
5
+ VQQGEwJCUjEVMBMGA1UECAwMU8ODwqNvIFBhdWxvMQ4wDAYDVQQKDAVIaWdodDCC
6
+ ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL+jVQJ2GbyDOWs+KZ0Mlx1f
7
+ E983vQQVoQpbh/Tzqo4NNGZHGEQF+AcuYiBJUqQAqKBP+aQIqr2u/PL4XUjLLUCo
8
+ ZituhZhvWAMTgFjyc8crOSp3V4zveIQdOTWnJBUp49lgzS1ho4iwxxxfLNsEWo/d
9
+ te98I0ac0kX9dNbtW8xlPwyfaH6ZPKlMlMUdxVkEnEZLnkAx+WoVfc2XH3naLN1F
10
+ bZDCZyxOV/mfdqlZHXqidFMfRK3A3XK7iRNfowUZnj6Cgl9aP7jKQJpUVq1SUVGX
11
+ ZWSMvBrFdizekgXfKnpS5Ha+Sk9bMOSQNo5k70+yLXPhzspYIY3MH8cMZM7EnTMC
12
+ AwEAAaNTMFEwHQYDVR0OBBYEFIyUOMXBKUb/mFU7vYBSgNMGUJWeMB8GA1UdIwQY
13
+ MBaAFIyUOMXBKUb/mFU7vYBSgNMGUJWeMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
14
+ hvcNAQELBQADggEBAIHEMxHzdmaqAT2FaEB/KmNAqWIC31huZrVIdRyXS51Dbtnv
15
+ a77YuwXgNmnKmk5/M9feE7mVu+bOAwusNdO9yHuFeuwLuFD4dK/Dx6jNAjeOC+jM
16
+ EIXUK8cNdlnAhhmhs/ni1uxol0RSWz+5+1Vo7M5JgOs182oLSZu5uFKbCbfgijy2
17
+ 77nrNbTK79lq3nLnf1b103yRFkbTKphVdLY+QZGuBtGmoFoCDif3dwcTcPhCO6Sw
18
+ HFxLKlqXtwrhY7r/VK4+Q83gQIZUkCY59RWRtG9TI8swauRfP0mGSoDlKVd+HiOY
19
+ bNAA5cGXYqNgpYHaCiPkTBzwU4UroWtRasyDwXs=
20
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEAv6NVAnYZvIM5az4pnQyXHV8T3ze9BBWhCluH9POqjg00ZkcY
3
+ RAX4By5iIElSpACooE/5pAiqva788vhdSMstQKhmK26FmG9YAxOAWPJzxys5KndX
4
+ jO94hB05NackFSnj2WDNLWGjiLDHHF8s2wRaj92173wjRpzSRf101u1bzGU/DJ9o
5
+ fpk8qUyUxR3FWQScRkueQDH5ahV9zZcfedos3UVtkMJnLE5X+Z92qVkdeqJ0Ux9E
6
+ rcDdcruJE1+jBRmePoKCX1o/uMpAmlRWrVJRUZdlZIy8GsV2LN6SBd8qelLkdr5K
7
+ T1sw5JA2jmTvT7Itc+HOylghjcwfxwxkzsSdMwIDAQABAoIBAQCZDSRWq+XQFemk
8
+ yefIQwbpcUbYrpZqDbApKoMB0h10B/3CdaNeqHm3mobKDGVRECmcp2LUbAuZJIlm
9
+ r48pFQPWMOgwZbuSy9I52rhV0YVAGzgzv06QA613rjNDs3Jw6JzNvq7/QIywHadX
10
+ 9HdJkEeXwNWOJ9GwkoypU0yeXsFDEnEGSDdeHCBDoxzxyqZJ2DHHj9f6oZrIq6sg
11
+ 8f9QBziu4y6IDDfhqynScN7nD3JEiyyd8k6Poh0EMo6zdLXeNbDKKP3FA4BuJVkg
12
+ aSUQFkh2YqJnaxB/cwHdQfZT2Znku4MbKPZ9c6BwVgoU4TI9eUjJ8g5UZXu42mW8
13
+ sgd1XmKJAoGBAPonc7/eI/c4vkwAd83lUsq3stoU9fB+oUcTA/cgIuq+jWHOLSW6
14
+ 3etWICBXMyN+OoAsEP3y815JItlvypYsN2CJgoR8VbYmeMRaDOpTGQYCnjEArjPB
15
+ QACD12/IamWj+ifAx/lyD8v60rhALW+5usj/P1SiNwCN5wLZUQGxs5p/AoGBAMQd
16
+ zqNvkzKNQR21TqWqw9L/BK8CEag7qMiETvxNTMSTwuRi6o4ZscBIGcnbRBL6oiQl
17
+ uw2qqfwgR/mqDQ8kN5bMIW6PkOvzb2W77VfkaZrVOyQr2a5f7lN5ypmOl+R3PTTc
18
+ IZfa9f9wiK7kpeSDZcazN0AX6+oJqWaXcjAKLFtNAoGBAMpK+Tnh5GfaRVmkzz18
19
+ A9XXdBUT+kc/wCB/6icAn/wBmMfNOYlXcnsLrPM6USqUu65G9H7I57IJptr7onKK
20
+ 00WILjoBajbhKaxvvh4IkSXhHBg4mqdT0fQYqjHFevUzA+r95Tl92fR0o89IZvYA
21
+ 1mIQuCAzBhO2rWgKYY3jLID1AoGAW5JzbxrlB2Cve/ixnWdsAnRzMmhr6DrbJ62n
22
+ 1+UcKFm6UbviO7HBrr+70uYgFiCTXv+DJPGAZ6qHEQuXB2/oyO/N2HsOty224TDr
23
+ tPOBX/uantwey24dsTqYIDVVtSb8HFeBFA/4d2qLV+aJk3bLKgl6jeHdlS0nvTCP
24
+ 7+CAL60CgYBBjyUkX3Ok1k25caoiPWwALnzqEyj5yje2qFyV+2HODDFmkJtJ2nZW
25
+ omUzfuugp5jPFt51EBj0nQsRV6y/3LUjmFx0ER3f9juyyVq33OlRRkzFZv6Tq3YE
26
+ cmEZlNonQBPP/sGQGNas28NZLUzt3/8VDVcTRgpn5Q4O8vbaOJJpRg==
27
+ -----END RSA PRIVATE KEY-----