@syntay/fastay 0.1.1 → 0.1.3
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 +83 -30
- package/package.json +17 -1
package/README.md
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
Perfeito! Aqui está a versão completa do README traduzida para português, mantendo o estilo e explicações detalhadas:
|
|
2
|
-
|
|
3
1
|
# 🚀 Fastay.js
|
|
4
2
|
|
|
5
3
|
Fastay é um framework moderno para backend construído sobre o **Express.js**, projetado para criar APIs de forma rápida, previsível e amigável para desenvolvedores.
|
|
@@ -29,24 +27,32 @@ O maior ponto forte é **rapidez e simplicidade**, ideal para projetos de backen
|
|
|
29
27
|
|
|
30
28
|
```bash
|
|
31
29
|
npx fastay create-app minha-app
|
|
30
|
+
```
|
|
32
31
|
|
|
33
32
|
Exemplo do CLI:
|
|
34
|
-
|
|
33
|
+
```bash
|
|
35
34
|
🚀 Fastay — Create a modern backend project
|
|
36
35
|
✔ Usar TypeScript? › Sim
|
|
37
36
|
✔ Escolha um ORM: › Nenhum
|
|
38
|
-
|
|
37
|
+
````
|
|
39
38
|
2. Entrar no projeto
|
|
40
|
-
|
|
39
|
+
```bash
|
|
41
40
|
cd minha-app
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
```
|
|
42
|
+
3. Iniciar servidor em desenvolvimento
|
|
43
|
+
```bash
|
|
44
|
+
npm run dev
|
|
45
|
+
```
|
|
46
|
+
4. Modo watch com reload automático
|
|
47
|
+
```bash
|
|
48
|
+
npm run dev:watch
|
|
49
|
+
```
|
|
44
50
|
|
|
45
51
|
|
|
46
52
|
---
|
|
47
53
|
|
|
48
54
|
Estrutura do Projeto
|
|
49
|
-
|
|
55
|
+
```bash
|
|
50
56
|
minha-app/
|
|
51
57
|
│
|
|
52
58
|
├── dist/ # Código compilado para produção
|
|
@@ -78,29 +84,30 @@ minha-app/
|
|
|
78
84
|
├── package.json
|
|
79
85
|
├── tsconfig.json
|
|
80
86
|
└── eslint.config.mjs
|
|
87
|
+
```
|
|
81
88
|
|
|
82
89
|
Explicação das pastas principais:
|
|
83
90
|
|
|
84
|
-
src/api — Cada pasta representa um grupo de rotas. Todo route.ts dentro é registrado automaticamente.
|
|
91
|
+
`src/api` — Cada pasta representa um grupo de rotas. Todo route.ts dentro é registrado automaticamente.
|
|
85
92
|
|
|
86
|
-
src/middlewares — Middlewares personalizados, carregados automaticamente ou usados via createMiddleware.
|
|
93
|
+
`src/middlewares` — Middlewares personalizados, carregados automaticamente ou usados via createMiddleware.
|
|
87
94
|
|
|
88
|
-
src/services — Mantém a lógica de negócio separada das rotas (Opcional porém recomendado).
|
|
95
|
+
`src/services` — Mantém a lógica de negócio separada das rotas (Opcional porém recomendado).
|
|
89
96
|
|
|
90
|
-
src/utils — Helpers genéricos.
|
|
97
|
+
`src/utils` — Helpers genéricos.
|
|
91
98
|
|
|
92
|
-
src/index.ts — Bootstrap principal da aplicação com createApp.
|
|
99
|
+
`src/index.ts` — Bootstrap principal da aplicação com createApp.
|
|
93
100
|
|
|
94
|
-
dist
|
|
101
|
+
`dist/` — Código compilado para produção.
|
|
95
102
|
|
|
96
|
-
fastay.config.json — Configuração do build, compilador e rotas.
|
|
103
|
+
`fastay.config.json` — Configuração do build, compilador e rotas.
|
|
97
104
|
|
|
98
105
|
|
|
99
106
|
|
|
100
107
|
---
|
|
101
108
|
|
|
102
|
-
⚡ src/index.ts
|
|
103
|
-
|
|
109
|
+
⚡ `src/index.ts`
|
|
110
|
+
```bash
|
|
104
111
|
import { createApp } from '@syntay/fastay';
|
|
105
112
|
|
|
106
113
|
const port = 5555;
|
|
@@ -112,16 +119,17 @@ void (async () => {
|
|
|
112
119
|
port: port
|
|
113
120
|
});
|
|
114
121
|
})();
|
|
115
|
-
|
|
122
|
+
```
|
|
116
123
|
|
|
117
124
|
---
|
|
118
125
|
|
|
119
|
-
Opções do createApp
|
|
126
|
+
Opções do `createApp`
|
|
120
127
|
|
|
121
128
|
createApp recebe um único objeto para configurar totalmente a aplicação Fastay.
|
|
122
129
|
|
|
123
|
-
|
|
124
|
-
apiDir?: string; // Diretório contendo as rotas da API
|
|
130
|
+
```bash
|
|
131
|
+
apiDir?: string; // Diretório contendo as rotas da API
|
|
132
|
+
(default: 'src/api')
|
|
125
133
|
baseRoute?: string; // Caminho base para todas as rotas (default: '/api')
|
|
126
134
|
port?: number; // Porta do servidor (default: 5000)
|
|
127
135
|
|
|
@@ -136,49 +144,61 @@ createApp recebe um único objeto para configurar totalmente a aplicação Fasta
|
|
|
136
144
|
trustProxy?: boolean; // Considerar headers de proxy reverso
|
|
137
145
|
locals?: Record<string, any>; // Variáveis globais para res.locals
|
|
138
146
|
}
|
|
147
|
+
```
|
|
139
148
|
|
|
140
149
|
Exemplos:
|
|
141
150
|
|
|
142
151
|
Aplicar middlewares globais
|
|
143
152
|
|
|
153
|
+
```bash
|
|
144
154
|
expressOptions: {
|
|
145
155
|
middlewares: [cors(), helmet()],
|
|
146
156
|
}
|
|
157
|
+
```
|
|
147
158
|
|
|
148
159
|
Configurar body parsers
|
|
149
160
|
|
|
161
|
+
```bash
|
|
150
162
|
expressOptions: {
|
|
151
163
|
jsonOptions: { limit: '10mb' },
|
|
152
|
-
urlencodedOptions: { extended: true
|
|
164
|
+
urlencodedOptions: { extended: true },
|
|
153
165
|
}
|
|
166
|
+
```
|
|
154
167
|
|
|
155
168
|
Servir arquivos estáticos
|
|
156
169
|
|
|
170
|
+
```bash
|
|
157
171
|
expressOptions: {
|
|
158
172
|
static: { path: 'public', options: { maxAge: 3600000 } }
|
|
159
173
|
}
|
|
174
|
+
```
|
|
160
175
|
|
|
161
176
|
Configurar views e locals
|
|
162
177
|
|
|
178
|
+
```bash
|
|
163
179
|
expressOptions: {
|
|
164
180
|
views: { engine: 'pug', dir: 'views' },
|
|
165
181
|
locals: { siteName: 'Fastay' }
|
|
166
182
|
}
|
|
183
|
+
```
|
|
167
184
|
|
|
168
185
|
Handler de erro customizado
|
|
169
186
|
|
|
187
|
+
```bash
|
|
170
188
|
expressOptions: {
|
|
171
189
|
errorHandler: (err, req, res, next) => {
|
|
172
190
|
console.error(err);
|
|
173
191
|
res.status(500).json({ message: 'Algo deu errado!' });
|
|
174
192
|
}
|
|
175
193
|
}
|
|
194
|
+
```
|
|
176
195
|
|
|
177
196
|
|
|
178
197
|
---
|
|
179
198
|
|
|
180
|
-
fastay.config.json
|
|
199
|
+
`fastay.config.json`
|
|
181
200
|
|
|
201
|
+
```bash
|
|
182
202
|
{
|
|
183
203
|
"entry": "src/index.ts",
|
|
184
204
|
"outDir": "dist",
|
|
@@ -188,14 +208,15 @@ fastay.config.json
|
|
|
188
208
|
"target": "es2020"
|
|
189
209
|
}
|
|
190
210
|
}
|
|
211
|
+
```
|
|
191
212
|
|
|
192
|
-
entry — Arquivo principal da aplicação.
|
|
213
|
+
`entry` — Arquivo principal da aplicação.
|
|
193
214
|
|
|
194
|
-
outDir — Diretório de saída do código compilado.
|
|
215
|
+
`outDir` — Diretório de saída do código compilado.
|
|
195
216
|
|
|
196
|
-
routesDir — Diretório opcional para rotas (default src/api).
|
|
217
|
+
`routesDir` — Diretório opcional para rotas (default src/api).
|
|
197
218
|
|
|
198
|
-
compiler — Opções para compilação TypeScript/ESBuild.
|
|
219
|
+
`compiler` — Opções para compilação TypeScript/ESBuild.
|
|
199
220
|
|
|
200
221
|
|
|
201
222
|
|
|
@@ -205,6 +226,7 @@ Rotas da API
|
|
|
205
226
|
|
|
206
227
|
Roteamento baseado em arquivos com sintaxe limpa:
|
|
207
228
|
|
|
229
|
+
```bash
|
|
208
230
|
import { Request } from '@syntay/fastay';
|
|
209
231
|
|
|
210
232
|
export async function GET() {
|
|
@@ -214,6 +236,7 @@ export async function GET() {
|
|
|
214
236
|
export async function POST(req: Request) {
|
|
215
237
|
return { message: 'Hello World' };
|
|
216
238
|
}
|
|
239
|
+
```
|
|
217
240
|
|
|
218
241
|
Cada método HTTP é exportado como função.
|
|
219
242
|
|
|
@@ -225,7 +248,7 @@ Suporta middlewares Express.
|
|
|
225
248
|
|
|
226
249
|
✅ Por que é melhor que Express puro:
|
|
227
250
|
|
|
228
|
-
Sem boilerplate: não precisa chamar app.get(...) ou app.post(...) manualmente.
|
|
251
|
+
Sem boilerplate: não precisa chamar `app.get(...)` ou `app.post(...)` manualmente.
|
|
229
252
|
|
|
230
253
|
Separação limpa dos arquivos de rota: cada rota fica em um arquivo route.ts dentro de api ou outro diretório.
|
|
231
254
|
|
|
@@ -236,6 +259,7 @@ Fácil manutenção de projetos grandes: sem necessidade de registrar manualment
|
|
|
236
259
|
|
|
237
260
|
1️⃣ Express.js
|
|
238
261
|
|
|
262
|
+
```bash
|
|
239
263
|
import express from 'express';
|
|
240
264
|
|
|
241
265
|
const app = express();
|
|
@@ -257,6 +281,7 @@ app.use('/api/auth', (req, res, next) => {
|
|
|
257
281
|
});
|
|
258
282
|
|
|
259
283
|
app.listen(5000, () => console.log('Server running on port 5000'));
|
|
284
|
+
```
|
|
260
285
|
|
|
261
286
|
Pontos negativos do Express puro:
|
|
262
287
|
|
|
@@ -272,6 +297,7 @@ Escalabilidade de grandes projetos fica complicada.
|
|
|
272
297
|
|
|
273
298
|
2️⃣ NestJS
|
|
274
299
|
|
|
300
|
+
```bash
|
|
275
301
|
import { Controller, Get, Post, Body } from '@nestjs/common';
|
|
276
302
|
|
|
277
303
|
@Controller('api/hello')
|
|
@@ -286,6 +312,7 @@ export class HelloController {
|
|
|
286
312
|
return { message: 'Hello POST World', body };
|
|
287
313
|
}
|
|
288
314
|
}
|
|
315
|
+
```
|
|
289
316
|
|
|
290
317
|
Características do NestJS:
|
|
291
318
|
|
|
@@ -303,6 +330,7 @@ Exige aprendizado de decorators, módulos e injeção de dependências.
|
|
|
303
330
|
|
|
304
331
|
3️⃣ Fastay.js
|
|
305
332
|
|
|
333
|
+
```bash
|
|
306
334
|
import { Request } from '@syntay/fastay';
|
|
307
335
|
|
|
308
336
|
// GET /api/hello
|
|
@@ -314,6 +342,7 @@ export async function GET() {
|
|
|
314
342
|
export async function POST(req: Request) {
|
|
315
343
|
return { message: 'Hello POST World' };
|
|
316
344
|
}
|
|
345
|
+
```
|
|
317
346
|
|
|
318
347
|
Características do Fastay:
|
|
319
348
|
|
|
@@ -340,15 +369,18 @@ Middlewares
|
|
|
340
369
|
|
|
341
370
|
Fastay permite middlewares auto-carregados e via createMiddleware:
|
|
342
371
|
|
|
372
|
+
```bash
|
|
343
373
|
import { Request, Response, Next } from '@syntay/fastay';
|
|
344
374
|
|
|
345
375
|
export async function auth(req: Request, _res: Response, next: Next) {
|
|
346
376
|
// Lógica de autenticação
|
|
347
377
|
next();
|
|
348
378
|
}
|
|
379
|
+
```
|
|
349
380
|
|
|
350
381
|
E crie um arquivo middleware.ts dentro da pasta src/middleware e use a função createMiddleware para configurar o seu middleware:
|
|
351
382
|
|
|
383
|
+
```bash
|
|
352
384
|
import { createMiddleware } from '@syntay/fastay';
|
|
353
385
|
import { auth } from './auth';
|
|
354
386
|
import { logger } from './logger';
|
|
@@ -357,7 +389,7 @@ export const middleware = createMiddleware({
|
|
|
357
389
|
'/auth': [auth],
|
|
358
390
|
'/admin': [logger],
|
|
359
391
|
});
|
|
360
|
-
|
|
392
|
+
```
|
|
361
393
|
|
|
362
394
|
---
|
|
363
395
|
|
|
@@ -382,4 +414,25 @@ Reduz boilerplate e aumenta a manutenção.
|
|
|
382
414
|
|
|
383
415
|
|
|
384
416
|
Ideal para desenvolvedores que querem estrutura sem complicação.
|
|
385
|
-
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
## 🔹 Contribuição
|
|
421
|
+
|
|
422
|
+
Contribuições são bem-vindas!
|
|
423
|
+
|
|
424
|
+
1. Faça um fork do projeto.
|
|
425
|
+
2. Crie uma branch (`git checkout -b minha-feature`).
|
|
426
|
+
3. Commit suas mudanças (`git commit -am 'Adiciona nova feature'`).
|
|
427
|
+
4. Push para a branch (`git push origin minha-feature`).
|
|
428
|
+
5. Abra um Pull Request.
|
|
429
|
+
|
|
430
|
+
---
|
|
431
|
+
|
|
432
|
+
## 🔹 Licença
|
|
433
|
+
|
|
434
|
+
MIT © Syntay Team
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
|
package/package.json
CHANGED
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@syntay/fastay",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
|
+
"description": "Framework backend moderno baseado em Express.js, para criar APIs rapidamente",
|
|
4
5
|
"main": "dist/index.js",
|
|
5
6
|
"types": "dist/index.d.ts",
|
|
6
7
|
"type": "module",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"express",
|
|
10
|
+
"backend",
|
|
11
|
+
"api",
|
|
12
|
+
"typescript",
|
|
13
|
+
"fastay",
|
|
14
|
+
"framework"
|
|
15
|
+
],
|
|
16
|
+
"author": "Syntay team <contact@syntay.site>",
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/syntay-team/fastay.git"
|
|
21
|
+
},
|
|
22
|
+
"homepage": "https://github.com/syntay-team/fastay#readme",
|
|
7
23
|
"scripts": {
|
|
8
24
|
"build": "tsc -p tsconfig.build.json",
|
|
9
25
|
"prepare": "npm run build"
|