c2-http 1.0.171 → 1.0.173
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/middleware/global-middleware/MiddlewareGlobals.js +2 -0
- package/dist/middleware/global-middleware/item/MiddlewareBody.js +5 -5
- package/dist/middleware/global-middleware/item/MiddlewareFixQueryParamsArray.d.ts +15 -0
- package/dist/middleware/global-middleware/item/MiddlewareFixQueryParamsArray.js +45 -0
- package/package.json +1 -1
|
@@ -8,6 +8,7 @@ const MiddlewareContext_1 = __importDefault(require("./item/MiddlewareContext"))
|
|
|
8
8
|
const MiddlewareLogRequest_1 = __importDefault(require("./item/MiddlewareLogRequest"));
|
|
9
9
|
const MiddlewareQueryParams_1 = __importDefault(require("./item/MiddlewareQueryParams"));
|
|
10
10
|
const MiddlewareCors_1 = __importDefault(require("./item/MiddlewareCors"));
|
|
11
|
+
const MiddlewareFixQueryParamsArray_1 = __importDefault(require("./item/MiddlewareFixQueryParamsArray"));
|
|
11
12
|
class MiddlewareGlobals {
|
|
12
13
|
config(expressApplication) {
|
|
13
14
|
MiddlewareBody_1.default.config(expressApplication);
|
|
@@ -15,6 +16,7 @@ class MiddlewareGlobals {
|
|
|
15
16
|
MiddlewareContext_1.default.config(expressApplication);
|
|
16
17
|
MiddlewareQueryParams_1.default.config(expressApplication);
|
|
17
18
|
MiddlewareLogRequest_1.default.config(expressApplication);
|
|
19
|
+
MiddlewareFixQueryParamsArray_1.default.config(expressApplication);
|
|
18
20
|
}
|
|
19
21
|
}
|
|
20
22
|
exports.default = new MiddlewareGlobals;
|
|
@@ -8,7 +8,7 @@ const c2_util_1 = require("c2-util");
|
|
|
8
8
|
const http_status_1 = require("http-status");
|
|
9
9
|
// import moment from "moment";
|
|
10
10
|
class MiddlewareBody {
|
|
11
|
-
LIMIT_BYTES = 1024 * 1024; //
|
|
11
|
+
LIMIT_BYTES = 1024 * 1024 * 25; // 25MB
|
|
12
12
|
config(expressApplication) {
|
|
13
13
|
// Middleware para verificar tamanho da requisição ANTES do body-parser processar
|
|
14
14
|
expressApplication.use((request, response, next) => {
|
|
@@ -33,11 +33,11 @@ class MiddlewareBody {
|
|
|
33
33
|
}
|
|
34
34
|
next();
|
|
35
35
|
});
|
|
36
|
-
expressApplication.use(body_parser_1.default.json({ limit: "
|
|
37
|
-
expressApplication.use(body_parser_1.default.urlencoded({ limit: "
|
|
38
|
-
expressApplication.use(body_parser_1.default.text({ limit: "
|
|
36
|
+
expressApplication.use(body_parser_1.default.json({ limit: "25mb" }));
|
|
37
|
+
expressApplication.use(body_parser_1.default.urlencoded({ limit: "25mb", extended: true })); // Aumentar de 5mb para 25mb
|
|
38
|
+
expressApplication.use(body_parser_1.default.text({ limit: "25mb" }));
|
|
39
39
|
// Adicionar parser para tipos não especificados
|
|
40
|
-
expressApplication.use(body_parser_1.default.raw({ limit: "
|
|
40
|
+
expressApplication.use(body_parser_1.default.raw({ limit: "25mb", type: "*/*" }));
|
|
41
41
|
// Error handler para capturar erros do body-parser (caso o content-length não esteja disponível)
|
|
42
42
|
expressApplication.use((error, request, response, next) => {
|
|
43
43
|
if (error && (error.status === 413 || error.type === "entity.too.large" || error.message?.includes("request entity too large"))) {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Middleware que converte objetos com índices numéricos de volta para arrays.
|
|
3
|
+
*
|
|
4
|
+
* O Express usa o módulo 'qs' para fazer o parsing dos query parameters, e por padrão
|
|
5
|
+
* ele tem um arrayLimit de 20. Quando você passa um array com mais de 20 elementos,
|
|
6
|
+
* o 'qs' converte automaticamente em um objeto com índices numéricos como chaves.
|
|
7
|
+
*
|
|
8
|
+
* Este middleware detecta objetos que parecem arrays (têm apenas chaves numéricas
|
|
9
|
+
* consecutivas começando de 0) e os converte de volta para arrays.
|
|
10
|
+
*/
|
|
11
|
+
declare class MiddlewareFixQueryParamsArray {
|
|
12
|
+
config(expressApplication: any): void;
|
|
13
|
+
}
|
|
14
|
+
declare const _default: MiddlewareFixQueryParamsArray;
|
|
15
|
+
export default _default;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Middleware que converte objetos com índices numéricos de volta para arrays.
|
|
5
|
+
*
|
|
6
|
+
* O Express usa o módulo 'qs' para fazer o parsing dos query parameters, e por padrão
|
|
7
|
+
* ele tem um arrayLimit de 20. Quando você passa um array com mais de 20 elementos,
|
|
8
|
+
* o 'qs' converte automaticamente em um objeto com índices numéricos como chaves.
|
|
9
|
+
*
|
|
10
|
+
* Este middleware detecta objetos que parecem arrays (têm apenas chaves numéricas
|
|
11
|
+
* consecutivas começando de 0) e os converte de volta para arrays.
|
|
12
|
+
*/
|
|
13
|
+
class MiddlewareFixQueryParamsArray {
|
|
14
|
+
config(expressApplication) {
|
|
15
|
+
expressApplication.use((request, response, next) => {
|
|
16
|
+
if (request.query) {
|
|
17
|
+
for (const key in request.query) {
|
|
18
|
+
if (request.query.hasOwnProperty(key)) {
|
|
19
|
+
const value = request.query[key];
|
|
20
|
+
// Verifica se é um objeto (não array, não primitivo)
|
|
21
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
22
|
+
// Verifica se todas as chaves são numéricas e consecutivas começando de 0
|
|
23
|
+
const keys = Object.keys(value);
|
|
24
|
+
// Verifica se todas as chaves são números válidos e consecutivos começando de 0
|
|
25
|
+
const numericKeys = keys.map(k => parseInt(k, 10)).filter(k => !isNaN(k));
|
|
26
|
+
if (numericKeys.length === keys.length && keys.length > 0) {
|
|
27
|
+
// Ordena as chaves numéricas
|
|
28
|
+
numericKeys.sort((a, b) => a - b);
|
|
29
|
+
// Verifica se são consecutivas começando de 0
|
|
30
|
+
const isConsecutive = numericKeys.every((num, index) => num === index);
|
|
31
|
+
// Se todas as chaves são numéricas e consecutivas, converte para array
|
|
32
|
+
if (isConsecutive) {
|
|
33
|
+
const arrayValue = numericKeys.map(num => value[num.toString()]);
|
|
34
|
+
request.query[key] = arrayValue;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
next();
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.default = new MiddlewareFixQueryParamsArray;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "c2-http",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.173",
|
|
4
4
|
"description": "Biblioteca Typescript para API NodeJS",
|
|
5
5
|
"repository": "https://cabralsilva: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@github.com/cabralsilva/c2-http.git",
|
|
6
6
|
"author": "Daniel Cabral <cabralconsultoriaemsoftware@gmail.com>",
|