@ismael1361/router 1.1.1 → 1.1.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/dist/HandleError.esm.js +126 -1
- package/dist/HandleError.esm.js.map +1 -1
- package/dist/HandleError.js +128 -1
- package/dist/HandleError.js.map +1 -1
- package/dist/Layer.esm.js +250 -1
- package/dist/Layer.esm.js.map +1 -1
- package/dist/Layer.js +252 -1
- package/dist/Layer.js.map +1 -1
- package/dist/Middlewares.esm.js +187 -1
- package/dist/Middlewares.esm.js.map +1 -1
- package/dist/Middlewares.js +194 -1
- package/dist/Middlewares.js.map +1 -1
- package/dist/handler.esm.js +170 -1
- package/dist/handler.esm.js.map +1 -1
- package/dist/handler.js +173 -1
- package/dist/handler.js.map +1 -1
- package/dist/index.esm.js +141 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +152 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware.esm.js +151 -1
- package/dist/middleware.esm.js.map +1 -1
- package/dist/middleware.js +154 -1
- package/dist/middleware.js.map +1 -1
- package/dist/node_modules/tslib/tslib.es6.esm.js +45 -1
- package/dist/node_modules/tslib/tslib.es6.esm.js.map +1 -1
- package/dist/node_modules/tslib/tslib.es6.js +48 -1
- package/dist/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/redocUi/index.esm.js +74 -1
- package/dist/redocUi/index.esm.js.map +1 -1
- package/dist/redocUi/index.js +76 -1
- package/dist/redocUi/index.js.map +1 -1
- package/dist/router.esm.js +434 -1
- package/dist/router.esm.js.map +1 -1
- package/dist/router.js +436 -1
- package/dist/router.js.map +1 -1
- package/dist/swagger-markdown/index.esm.js +128 -1
- package/dist/swagger-markdown/index.esm.js.map +1 -1
- package/dist/swagger-markdown/index.js +134 -1
- package/dist/swagger-markdown/index.js.map +1 -1
- package/dist/swagger-markdown/lib/anchor.esm.js +6 -1
- package/dist/swagger-markdown/lib/anchor.esm.js.map +1 -1
- package/dist/swagger-markdown/lib/anchor.js +8 -1
- package/dist/swagger-markdown/lib/anchor.js.map +1 -1
- package/dist/swagger-markdown/lib/inArray.esm.js +20 -1
- package/dist/swagger-markdown/lib/inArray.esm.js.map +1 -1
- package/dist/swagger-markdown/lib/inArray.js +22 -1
- package/dist/swagger-markdown/lib/inArray.js.map +1 -1
- package/dist/swagger-markdown/models/schema.esm.js +64 -1
- package/dist/swagger-markdown/models/schema.esm.js.map +1 -1
- package/dist/swagger-markdown/models/schema.js +66 -1
- package/dist/swagger-markdown/models/schema.js.map +1 -1
- package/dist/swagger-markdown/transformers/contact.esm.js +23 -1
- package/dist/swagger-markdown/transformers/contact.esm.js.map +1 -1
- package/dist/swagger-markdown/transformers/contact.js +25 -1
- package/dist/swagger-markdown/transformers/contact.js.map +1 -1
- package/dist/swagger-markdown/transformers/dataTypes.esm.js +59 -1
- package/dist/swagger-markdown/transformers/dataTypes.esm.js.map +1 -1
- package/dist/swagger-markdown/transformers/dataTypes.js +61 -1
- package/dist/swagger-markdown/transformers/dataTypes.js.map +1 -1
- package/dist/swagger-markdown/transformers/definitions.esm.js +75 -1
- package/dist/swagger-markdown/transformers/definitions.esm.js.map +1 -1
- package/dist/swagger-markdown/transformers/definitions.js +80 -1
- package/dist/swagger-markdown/transformers/definitions.js.map +1 -1
- package/dist/swagger-markdown/transformers/externalDocs.esm.js +13 -1
- package/dist/swagger-markdown/transformers/externalDocs.esm.js.map +1 -1
- package/dist/swagger-markdown/transformers/externalDocs.js +15 -1
- package/dist/swagger-markdown/transformers/externalDocs.js.map +1 -1
- package/dist/swagger-markdown/transformers/info.esm.js +36 -1
- package/dist/swagger-markdown/transformers/info.esm.js.map +1 -1
- package/dist/swagger-markdown/transformers/info.js +38 -1
- package/dist/swagger-markdown/transformers/info.js.map +1 -1
- package/dist/swagger-markdown/transformers/license.esm.js +20 -1
- package/dist/swagger-markdown/transformers/license.esm.js.map +1 -1
- package/dist/swagger-markdown/transformers/license.js +22 -1
- package/dist/swagger-markdown/transformers/license.js.map +1 -1
- package/dist/swagger-markdown/transformers/path.esm.js +71 -1
- package/dist/swagger-markdown/transformers/path.esm.js.map +1 -1
- package/dist/swagger-markdown/transformers/path.js +76 -1
- package/dist/swagger-markdown/transformers/path.js.map +1 -1
- package/dist/swagger-markdown/transformers/pathParameters.esm.js +62 -1
- package/dist/swagger-markdown/transformers/pathParameters.esm.js.map +1 -1
- package/dist/swagger-markdown/transformers/pathParameters.js +64 -1
- package/dist/swagger-markdown/transformers/pathParameters.js.map +1 -1
- package/dist/swagger-markdown/transformers/pathResponses.esm.js +45 -1
- package/dist/swagger-markdown/transformers/pathResponses.esm.js.map +1 -1
- package/dist/swagger-markdown/transformers/pathResponses.js +47 -1
- package/dist/swagger-markdown/transformers/pathResponses.js.map +1 -1
- package/dist/swagger-markdown/transformers/security.esm.js +41 -1
- package/dist/swagger-markdown/transformers/security.esm.js.map +1 -1
- package/dist/swagger-markdown/transformers/security.js +43 -1
- package/dist/swagger-markdown/transformers/security.js.map +1 -1
- package/dist/swagger-markdown/transformers/securityDefinitions.esm.js +51 -1
- package/dist/swagger-markdown/transformers/securityDefinitions.esm.js.map +1 -1
- package/dist/swagger-markdown/transformers/securityDefinitions.js +57 -1
- package/dist/swagger-markdown/transformers/securityDefinitions.js.map +1 -1
- package/dist/utils.esm.js +244 -1
- package/dist/utils.esm.js.map +1 -1
- package/dist/utils.js +256 -1
- package/dist/utils.js.map +1 -1
- package/package.json +2 -2
package/dist/Layer.js
CHANGED
|
@@ -1,2 +1,253 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib_es6 = require('./node_modules/tslib/tslib.es6.js');
|
|
4
|
+
var utils$1 = require('./utils.js');
|
|
5
|
+
var utils = require('@ismael1361/utils');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
* Representa uma camada interna do roteador, funcionando como uma coleção estruturada
|
|
10
|
+
* de definições de rotas e middlewares.
|
|
11
|
+
*
|
|
12
|
+
* Esta classe é o núcleo do sistema de roteamento, permitindo a construção de uma árvore
|
|
13
|
+
* de rotas aninhadas, onde middlewares de camadas superiores são aplicados às camadas inferiores.
|
|
14
|
+
* Ela não deve ser usada diretamente pelo consumidor da biblioteca.
|
|
15
|
+
*/
|
|
16
|
+
class Layer extends Array {
|
|
17
|
+
/**
|
|
18
|
+
* @internal
|
|
19
|
+
* @param {string} [path=""] O prefixo de caminho para esta camada.
|
|
20
|
+
* @param {MiddlewareFCDoc} [doc={}] A documentação base para esta camada.
|
|
21
|
+
*/
|
|
22
|
+
constructor(path = "", doc = {}) {
|
|
23
|
+
super();
|
|
24
|
+
this.path = path;
|
|
25
|
+
this.doc = doc;
|
|
26
|
+
this.__event__ = new utils.EventEmitter();
|
|
27
|
+
/** @internal O índice da última camada adicionada. */
|
|
28
|
+
this.index = -1;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Adiciona um ouvinte para eventos internos da camada.
|
|
32
|
+
* @param {"add"} event O nome do evento. Atualmente, apenas 'add' é suportado.
|
|
33
|
+
* @param {(route: IRoute) => void} listener A função a ser chamada quando o evento é emitido.
|
|
34
|
+
*/
|
|
35
|
+
addListener(event, listener) {
|
|
36
|
+
return this.__event__.on(event, listener);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Remove um ouvinte de eventos.
|
|
40
|
+
* @param {"add"} event O nome do evento.
|
|
41
|
+
* @param {(route: IRoute) => void} listener A função ouvinte a ser removida.
|
|
42
|
+
*/
|
|
43
|
+
removeListener(event, listener) {
|
|
44
|
+
return this.__event__.off(event, listener);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @internal
|
|
48
|
+
* Adiciona uma nova definição (camada) à pilha. Este é o método base usado por `get`, `post`, `middleware`, etc.
|
|
49
|
+
* Retorna um objeto semelhante a `this` com um getter/setter para a documentação da camada recém-adicionada.
|
|
50
|
+
*/
|
|
51
|
+
pushPath(type, method, path, handle, doc = {}) {
|
|
52
|
+
const index = this.length;
|
|
53
|
+
this.push({
|
|
54
|
+
path,
|
|
55
|
+
method,
|
|
56
|
+
type,
|
|
57
|
+
handle: handle instanceof Layer ? undefined : handle,
|
|
58
|
+
doc: utils$1.joinDocs(this.doc, ...(handle instanceof Layer ? [handle.doc] : utils$1.getDocHandles(...handle)), doc),
|
|
59
|
+
route: handle instanceof Layer ? handle : undefined,
|
|
60
|
+
});
|
|
61
|
+
const route = this.routes.find((r) => r.index === index);
|
|
62
|
+
if (route)
|
|
63
|
+
this.__event__.emit("add", route);
|
|
64
|
+
return Object.assign(Object.assign({}, this), { index,
|
|
65
|
+
get doc() {
|
|
66
|
+
var _a;
|
|
67
|
+
return ((_a = this[index]) === null || _a === void 0 ? void 0 : _a.doc) || {};
|
|
68
|
+
},
|
|
69
|
+
set doc(doc) {
|
|
70
|
+
this[index].doc = doc;
|
|
71
|
+
} });
|
|
72
|
+
}
|
|
73
|
+
route(...args) {
|
|
74
|
+
const path = typeof args[0] === "string" ? args[0] : "";
|
|
75
|
+
const doc = args[1] instanceof Layer ? args[2] : args[0] instanceof Layer || typeof args[0] === "string" ? args[1] : args[0];
|
|
76
|
+
const root = new Layer(utils$1.joinPath(this.path, path), doc);
|
|
77
|
+
if (args[0] instanceof Layer || args[1] instanceof Layer) {
|
|
78
|
+
const route = args[0] instanceof Layer ? args[0] : args[1];
|
|
79
|
+
this.push({ path: "", method: "use", type: "route", route: root });
|
|
80
|
+
root.push({ path: "", method: "use", type: "route", route });
|
|
81
|
+
return route;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
this.push({ path: path, method: "use", type: "route", route: root });
|
|
85
|
+
}
|
|
86
|
+
return root;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* @internal
|
|
90
|
+
* Fábrica estática para criar uma nova instância de `Layer`.
|
|
91
|
+
*/
|
|
92
|
+
static route(path, doc) {
|
|
93
|
+
return new Layer(path, doc);
|
|
94
|
+
}
|
|
95
|
+
by(path, route, doc) {
|
|
96
|
+
const _path = typeof path === "string" ? path : path.path;
|
|
97
|
+
const _route = typeof path === "string" ? route : path;
|
|
98
|
+
const _doc = typeof path === "string" ? doc : route;
|
|
99
|
+
this.route(_path, _route, _doc);
|
|
100
|
+
return this;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* @internal
|
|
104
|
+
* Retorna uma representação da pilha de camadas para fins de depuração.
|
|
105
|
+
*/
|
|
106
|
+
get stack() {
|
|
107
|
+
return Array.from(this).map((_a) => {
|
|
108
|
+
var { route } = _a, props = tslib_es6.__rest(_a, ["route"]);
|
|
109
|
+
return Object.assign(Object.assign({}, props), { get route() {
|
|
110
|
+
return route === null || route === void 0 ? void 0 : route.stack;
|
|
111
|
+
} });
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
executeMiddlewares(request, response, next) {
|
|
115
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
const middlewares = [];
|
|
117
|
+
this.filter(({ type }) => {
|
|
118
|
+
return type === "middleware";
|
|
119
|
+
}).forEach(({ handle }) => {
|
|
120
|
+
middlewares.push(...(handle || []));
|
|
121
|
+
});
|
|
122
|
+
let resolve = undefined;
|
|
123
|
+
for (let i = 0; i < middlewares.length; i++) {
|
|
124
|
+
if (response.headersSent) {
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
const middleware = middlewares[i];
|
|
128
|
+
resolve = yield Promise.race([middleware(request, response, i >= middlewares.length - 1 ? next : () => { })]);
|
|
129
|
+
}
|
|
130
|
+
return resolve;
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Processa e achata a árvore de camadas em uma lista linear de rotas finais (`IRoute`).
|
|
135
|
+
* Este getter é fundamental, pois resolve os middlewares aninhados, aplica-os às rotas filhas
|
|
136
|
+
* e consolida os caminhos e a documentação.
|
|
137
|
+
*/
|
|
138
|
+
get routes() {
|
|
139
|
+
const routes = [];
|
|
140
|
+
const middlewares = [];
|
|
141
|
+
const docs = [];
|
|
142
|
+
let index = -1;
|
|
143
|
+
for (const layer of this) {
|
|
144
|
+
index++;
|
|
145
|
+
switch (layer.type) {
|
|
146
|
+
case "middleware": {
|
|
147
|
+
const handles = layer.handle || [];
|
|
148
|
+
middlewares.push(...handles);
|
|
149
|
+
docs.push(...utils$1.getDocHandles(...handles), layer.doc || {});
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
case "route": {
|
|
153
|
+
layer.route.routes.forEach((route) => {
|
|
154
|
+
const handles = [...middlewares, ...(layer.handle || []), ...route.handle];
|
|
155
|
+
routes.push({
|
|
156
|
+
index,
|
|
157
|
+
path: utils$1.joinPath(layer.path || "", route.path),
|
|
158
|
+
method: route.method,
|
|
159
|
+
handle: handles,
|
|
160
|
+
doc: utils$1.joinDocs(...docs, ...utils$1.getDocHandles(...handles), layer.doc || {}, route.doc || {}),
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
default: {
|
|
166
|
+
const handles = [...middlewares, ...(layer.handle || [])];
|
|
167
|
+
routes.push({
|
|
168
|
+
index,
|
|
169
|
+
path: layer.path || "",
|
|
170
|
+
method: layer.method,
|
|
171
|
+
handle: handles,
|
|
172
|
+
doc: utils$1.joinDocs(...docs, ...utils$1.getDocHandles(...handles), layer.doc || {}),
|
|
173
|
+
});
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return routes;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* @internal
|
|
182
|
+
* Adiciona um middleware a esta camada.
|
|
183
|
+
*/
|
|
184
|
+
middleware(handle, doc = {}) {
|
|
185
|
+
return this.pushPath("middleware", "use", this.path, handle, utils$1.joinDocs(this.doc, doc));
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* @internal
|
|
189
|
+
* Adiciona uma rota do tipo GET.
|
|
190
|
+
*/
|
|
191
|
+
get(path, handle, doc = {}) {
|
|
192
|
+
return this.pushPath("layer", "get", utils$1.joinPath(this.path, path), handle, utils$1.joinDocs(this.doc, doc));
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* @internal
|
|
196
|
+
* Adiciona uma rota do tipo POST.
|
|
197
|
+
*/
|
|
198
|
+
post(path, handle, doc = {}) {
|
|
199
|
+
return this.pushPath("layer", "post", utils$1.joinPath(this.path, path), handle, utils$1.joinDocs(this.doc, doc));
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* @internal
|
|
203
|
+
* Adiciona uma rota do tipo PUT.
|
|
204
|
+
*/
|
|
205
|
+
put(path, handle, doc = {}) {
|
|
206
|
+
return this.pushPath("layer", "put", utils$1.joinPath(this.path, path), handle, utils$1.joinDocs(this.doc, doc));
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* @internal
|
|
210
|
+
* Adiciona uma rota do tipo DELETE.
|
|
211
|
+
*/
|
|
212
|
+
delete(path, handle, doc = {}) {
|
|
213
|
+
return this.pushPath("layer", "delete", utils$1.joinPath(this.path, path), handle, utils$1.joinDocs(this.doc, doc));
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* @internal
|
|
217
|
+
* Adiciona uma rota do tipo PATCH.
|
|
218
|
+
*/
|
|
219
|
+
patch(path, handle, doc = {}) {
|
|
220
|
+
return this.pushPath("layer", "patch", utils$1.joinPath(this.path, path), handle, utils$1.joinDocs(this.doc, doc));
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* @internal
|
|
224
|
+
* Adiciona uma rota do tipo OPTIONS.
|
|
225
|
+
*/
|
|
226
|
+
options(path, handle, doc = {}) {
|
|
227
|
+
return this.pushPath("layer", "options", utils$1.joinPath(this.path, path), handle, utils$1.joinDocs(this.doc, doc));
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* @internal
|
|
231
|
+
* Adiciona uma rota do tipo HEAD.
|
|
232
|
+
*/
|
|
233
|
+
head(path, handle, doc = {}) {
|
|
234
|
+
return this.pushPath("layer", "head", utils$1.joinPath(this.path, path), handle, utils$1.joinDocs(this.doc, doc));
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* @internal
|
|
238
|
+
* Adiciona uma rota que corresponde a todos os métodos HTTP.
|
|
239
|
+
*/
|
|
240
|
+
all(path, handle, doc = {}) {
|
|
241
|
+
return this.pushPath("layer", "all", utils$1.joinPath(this.path, path), handle, utils$1.joinDocs(this.doc, doc));
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* @internal
|
|
245
|
+
* Adiciona um middleware a um caminho específico.
|
|
246
|
+
*/
|
|
247
|
+
use(path, handle, doc = {}) {
|
|
248
|
+
return this.pushPath("layer", "use", utils$1.joinPath(this.path, path), handle, utils$1.joinDocs(this.doc, doc));
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
exports.Layer = Layer;
|
|
2
253
|
//# sourceMappingURL=Layer.js.map
|
package/dist/Layer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Layer.js","sources":["../src/Layer.ts"],"sourcesContent":[null],"names":["
|
|
1
|
+
{"version":3,"file":"Layer.js","sources":["../src/Layer.ts"],"sourcesContent":[null],"names":["EventEmitter","joinDocs","getDocHandles","joinPath","__rest"],"mappings":"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"}
|
package/dist/Middlewares.esm.js
CHANGED
|
@@ -1,2 +1,188 @@
|
|
|
1
|
-
import{__awaiter
|
|
1
|
+
import { __awaiter } from './node_modules/tslib/tslib.es6.esm.js';
|
|
2
|
+
import { Readable } from 'stream';
|
|
3
|
+
import { HandleError } from './HandleError.esm.js';
|
|
4
|
+
import BodyParser from 'body-parser';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Retorna um middleware que analisa corpos de requisição JSON.
|
|
8
|
+
* Este middleware é um wrapper em torno do `body-parser.json()`.
|
|
9
|
+
*
|
|
10
|
+
* @param {OptionsJson} [options] - Opções de configuração para o `body-parser`.
|
|
11
|
+
* @returns {MiddlewareFC<Request, Response>} Uma função de middleware do Express.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { create, Middlewares } from '@ismael1361/router';
|
|
15
|
+
*
|
|
16
|
+
* const app = create();
|
|
17
|
+
*
|
|
18
|
+
* // Aplica o middleware para analisar JSON em todas as rotas
|
|
19
|
+
* app.middleware(Middlewares.json());
|
|
20
|
+
*
|
|
21
|
+
* app.post('/data').handler((req, res) => {
|
|
22
|
+
* // req.body agora contém o objeto JSON enviado
|
|
23
|
+
* res.json({ received: req.body });
|
|
24
|
+
* });
|
|
25
|
+
*/
|
|
26
|
+
const json = (options) => {
|
|
27
|
+
return BodyParser.json(options);
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Retorna um middleware que analisa corpos de requisição como um Buffer.
|
|
31
|
+
* Este middleware é um wrapper em torno do `body-parser.raw()`.
|
|
32
|
+
*
|
|
33
|
+
* @param {Options} [options] - Opções de configuração para o `body-parser`.
|
|
34
|
+
* @returns {MiddlewareFC<Request, Response>} Uma função de middleware do Express.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* import { create, Middlewares } from '@ismael1361/router';
|
|
38
|
+
*
|
|
39
|
+
* const app = create();
|
|
40
|
+
*
|
|
41
|
+
* // Analisa corpos do tipo 'application/octet-stream' como Buffer
|
|
42
|
+
* app.middleware(Middlewares.raw({ type: 'application/octet-stream', limit: '10mb' }));
|
|
43
|
+
*
|
|
44
|
+
* app.post('/upload-raw').handler((req, res) => {
|
|
45
|
+
* // req.body é um Buffer com os dados brutos
|
|
46
|
+
* console.log('Buffer recebido:', req.body.length, 'bytes');
|
|
47
|
+
* res.send('Raw data received');
|
|
48
|
+
* });
|
|
49
|
+
*/
|
|
50
|
+
const raw = (options) => {
|
|
51
|
+
return BodyParser.raw(options);
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Retorna um middleware que analisa corpos de requisição como texto.
|
|
55
|
+
* Este middleware é um wrapper em torno do `body-parser.text()`.
|
|
56
|
+
*
|
|
57
|
+
* @param {OptionsText} [options] - Opções de configuração para o `body-parser`.
|
|
58
|
+
* @returns {MiddlewareFC<Request, Response>} Uma função de middleware do Express.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* import { create, Middlewares } from '@ismael1361/router';
|
|
62
|
+
*
|
|
63
|
+
* const app = create();
|
|
64
|
+
*
|
|
65
|
+
* // Analisa corpos do tipo 'text/plain' como string
|
|
66
|
+
* app.middleware(Middlewares.text({ type: 'text/plain' }));
|
|
67
|
+
*
|
|
68
|
+
* app.post('/log').handler((req, res) => {
|
|
69
|
+
* // req.body é uma string com o conteúdo do corpo
|
|
70
|
+
* console.log('Log recebido:', req.body);
|
|
71
|
+
* res.send('Log received');
|
|
72
|
+
* });
|
|
73
|
+
*/
|
|
74
|
+
const text = (options) => {
|
|
75
|
+
return BodyParser.text(options);
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Retorna um middleware que analisa corpos de requisição com o formato `application/x-www-form-urlencoded`.
|
|
79
|
+
* Este middleware é um wrapper em torno do `body-parser.urlencoded()`.
|
|
80
|
+
*
|
|
81
|
+
* @param {OptionsUrlencoded} [options] - Opções de configuração para o `body-parser`.
|
|
82
|
+
* @returns {MiddlewareFC<Request, Response>} Uma função de middleware do Express.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* import { create, Middlewares } from '@ismael1361/router';
|
|
86
|
+
*
|
|
87
|
+
* const app = create();
|
|
88
|
+
*
|
|
89
|
+
* // Aplica o middleware para analisar dados de formulário
|
|
90
|
+
* app.middleware(Middlewares.urlencoded({ extended: true }));
|
|
91
|
+
*
|
|
92
|
+
* app.post('/submit-form').handler((req, res) => {
|
|
93
|
+
* // req.body contém os dados do formulário
|
|
94
|
+
* res.json({ form_data: req.body });
|
|
95
|
+
* });
|
|
96
|
+
*/
|
|
97
|
+
const urlencoded = (options) => {
|
|
98
|
+
return BodyParser.urlencoded(options);
|
|
99
|
+
};
|
|
100
|
+
const cors = (allowOrigin = "*") => {
|
|
101
|
+
return (req, res, next) => {
|
|
102
|
+
// Configuração mais robusta de CORS
|
|
103
|
+
const origin = req.headers.origin;
|
|
104
|
+
// Definir headers CORS
|
|
105
|
+
res.setHeader("Access-Control-Allow-Origin", allowOrigin === "*" ? "*" : origin || "*");
|
|
106
|
+
res.setHeader("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS");
|
|
107
|
+
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, Content-Length, Accept, Origin, X-Requested-With");
|
|
108
|
+
res.setHeader("Access-Control-Allow-Credentials", "true");
|
|
109
|
+
res.setHeader("Access-Control-Expose-Headers", "Content-Length, Content-Range");
|
|
110
|
+
// Responder a requisições OPTIONS
|
|
111
|
+
if (req.method === "OPTIONS") {
|
|
112
|
+
return res.status(200).end();
|
|
113
|
+
}
|
|
114
|
+
next();
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Middleware para analisar arquivos de uma solicitação.
|
|
119
|
+
* Os arquivos com suas informações são armazenados no objeto `req.files`, sua tipagem: `FileInfo[]`.
|
|
120
|
+
* Ao usar esse middleware, é necessário que o corpo da requisição seja um objeto `FormData`.
|
|
121
|
+
* Se caso o middleware não encontrar nenhum arquivo, ele irá lançar um erro.
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```ts
|
|
125
|
+
* Router.middleware(Middleware.files()).handler(async (req, res) => {
|
|
126
|
+
* });
|
|
127
|
+
*
|
|
128
|
+
* Router.middleware(Middleware.files(Middleware.files('image/jpeg', 'image/png', 'application/pdf')).handler(async (req, res) => {
|
|
129
|
+
* });
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
const files = (...allowedMimes) => {
|
|
133
|
+
return (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
134
|
+
allowedMimes = allowedMimes.map((mime) => mime.trim().toLowerCase());
|
|
135
|
+
const rawBody = yield new Promise((resolve, reject) => {
|
|
136
|
+
const chunks = [];
|
|
137
|
+
req.on("data", (chunk) => chunks.push(Buffer.from(chunk)));
|
|
138
|
+
req.on("end", () => resolve(Buffer.concat(chunks)));
|
|
139
|
+
req.on("error", reject);
|
|
140
|
+
});
|
|
141
|
+
if (!req.headers["content-type"] || !req.headers["content-type"].startsWith("multipart/form-data")) {
|
|
142
|
+
throw new HandleError("Invalid content type", "BAD_REQUEST", 400);
|
|
143
|
+
}
|
|
144
|
+
const boundary = req.headers["content-type"].split("boundary=")[1];
|
|
145
|
+
const parts = rawBody.toString("binary").split(`--${boundary}`);
|
|
146
|
+
const files = [];
|
|
147
|
+
for (const part of parts) {
|
|
148
|
+
if (part.includes('filename="')) {
|
|
149
|
+
const [header, ...body] = part.split("\r\n\r\n");
|
|
150
|
+
const content = body.join("\r\n\r\n").trim();
|
|
151
|
+
const buffer = Buffer.from(content, "binary");
|
|
152
|
+
// Extrair nome do campo e nome do arquivo
|
|
153
|
+
const fieldnameMatch = header.match(/name="([^"]+)"/);
|
|
154
|
+
const filenameMatch = header.match(/filename="([^"]+)"/);
|
|
155
|
+
const mimetypeMatch = header.match(/Content-Type: ([^\r\n]+)/);
|
|
156
|
+
if (fieldnameMatch && filenameMatch && mimetypeMatch) {
|
|
157
|
+
const fieldname = fieldnameMatch[1];
|
|
158
|
+
const filename = filenameMatch[1];
|
|
159
|
+
const contentType = mimetypeMatch[1].trim().toLowerCase();
|
|
160
|
+
if (allowedMimes.length > 0 && !allowedMimes.includes(contentType)) {
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
files.push({
|
|
164
|
+
fieldname: fieldname,
|
|
165
|
+
originalname: filename,
|
|
166
|
+
encoding: "",
|
|
167
|
+
mimetype: contentType,
|
|
168
|
+
size: content.length,
|
|
169
|
+
stream: new Readable(),
|
|
170
|
+
destination: "",
|
|
171
|
+
filename: filename,
|
|
172
|
+
path: "",
|
|
173
|
+
buffer: buffer.slice(0, -2),
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (!files.length) {
|
|
179
|
+
throw new HandleError("No files were uploaded", "BAD_REQUEST", 400);
|
|
180
|
+
}
|
|
181
|
+
req.file = files[0];
|
|
182
|
+
req.files = files;
|
|
183
|
+
next();
|
|
184
|
+
});
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
export { cors, files, json, raw, text, urlencoded };
|
|
2
188
|
//# sourceMappingURL=Middlewares.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Middlewares.esm.js","sources":["../src/Middlewares.ts"],"sourcesContent":[null],"names":[
|
|
1
|
+
{"version":3,"file":"Middlewares.esm.js","sources":["../src/Middlewares.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|