@ismael1361/router 1.1.1 → 1.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.
Files changed (101) hide show
  1. package/dist/HandleError.esm.js +126 -1
  2. package/dist/HandleError.esm.js.map +1 -1
  3. package/dist/HandleError.js +128 -1
  4. package/dist/HandleError.js.map +1 -1
  5. package/dist/Layer.esm.js +250 -1
  6. package/dist/Layer.esm.js.map +1 -1
  7. package/dist/Layer.js +252 -1
  8. package/dist/Layer.js.map +1 -1
  9. package/dist/Middlewares.esm.js +187 -1
  10. package/dist/Middlewares.esm.js.map +1 -1
  11. package/dist/Middlewares.js +194 -1
  12. package/dist/Middlewares.js.map +1 -1
  13. package/dist/handler.esm.js +170 -1
  14. package/dist/handler.esm.js.map +1 -1
  15. package/dist/handler.js +173 -1
  16. package/dist/handler.js.map +1 -1
  17. package/dist/index.esm.js +141 -1
  18. package/dist/index.esm.js.map +1 -1
  19. package/dist/index.js +152 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/middleware.esm.js +151 -1
  22. package/dist/middleware.esm.js.map +1 -1
  23. package/dist/middleware.js +154 -1
  24. package/dist/middleware.js.map +1 -1
  25. package/dist/node_modules/tslib/tslib.es6.esm.js +45 -1
  26. package/dist/node_modules/tslib/tslib.es6.esm.js.map +1 -1
  27. package/dist/node_modules/tslib/tslib.es6.js +48 -1
  28. package/dist/node_modules/tslib/tslib.es6.js.map +1 -1
  29. package/dist/redocUi/index.esm.js +74 -1
  30. package/dist/redocUi/index.esm.js.map +1 -1
  31. package/dist/redocUi/index.js +76 -1
  32. package/dist/redocUi/index.js.map +1 -1
  33. package/dist/router.esm.js +436 -1
  34. package/dist/router.esm.js.map +1 -1
  35. package/dist/router.js +438 -1
  36. package/dist/router.js.map +1 -1
  37. package/dist/swagger-markdown/index.esm.js +128 -1
  38. package/dist/swagger-markdown/index.esm.js.map +1 -1
  39. package/dist/swagger-markdown/index.js +134 -1
  40. package/dist/swagger-markdown/index.js.map +1 -1
  41. package/dist/swagger-markdown/lib/anchor.esm.js +6 -1
  42. package/dist/swagger-markdown/lib/anchor.esm.js.map +1 -1
  43. package/dist/swagger-markdown/lib/anchor.js +8 -1
  44. package/dist/swagger-markdown/lib/anchor.js.map +1 -1
  45. package/dist/swagger-markdown/lib/inArray.esm.js +20 -1
  46. package/dist/swagger-markdown/lib/inArray.esm.js.map +1 -1
  47. package/dist/swagger-markdown/lib/inArray.js +22 -1
  48. package/dist/swagger-markdown/lib/inArray.js.map +1 -1
  49. package/dist/swagger-markdown/models/schema.esm.js +64 -1
  50. package/dist/swagger-markdown/models/schema.esm.js.map +1 -1
  51. package/dist/swagger-markdown/models/schema.js +66 -1
  52. package/dist/swagger-markdown/models/schema.js.map +1 -1
  53. package/dist/swagger-markdown/transformers/contact.esm.js +23 -1
  54. package/dist/swagger-markdown/transformers/contact.esm.js.map +1 -1
  55. package/dist/swagger-markdown/transformers/contact.js +25 -1
  56. package/dist/swagger-markdown/transformers/contact.js.map +1 -1
  57. package/dist/swagger-markdown/transformers/dataTypes.esm.js +59 -1
  58. package/dist/swagger-markdown/transformers/dataTypes.esm.js.map +1 -1
  59. package/dist/swagger-markdown/transformers/dataTypes.js +61 -1
  60. package/dist/swagger-markdown/transformers/dataTypes.js.map +1 -1
  61. package/dist/swagger-markdown/transformers/definitions.esm.js +75 -1
  62. package/dist/swagger-markdown/transformers/definitions.esm.js.map +1 -1
  63. package/dist/swagger-markdown/transformers/definitions.js +80 -1
  64. package/dist/swagger-markdown/transformers/definitions.js.map +1 -1
  65. package/dist/swagger-markdown/transformers/externalDocs.esm.js +13 -1
  66. package/dist/swagger-markdown/transformers/externalDocs.esm.js.map +1 -1
  67. package/dist/swagger-markdown/transformers/externalDocs.js +15 -1
  68. package/dist/swagger-markdown/transformers/externalDocs.js.map +1 -1
  69. package/dist/swagger-markdown/transformers/info.esm.js +36 -1
  70. package/dist/swagger-markdown/transformers/info.esm.js.map +1 -1
  71. package/dist/swagger-markdown/transformers/info.js +38 -1
  72. package/dist/swagger-markdown/transformers/info.js.map +1 -1
  73. package/dist/swagger-markdown/transformers/license.esm.js +20 -1
  74. package/dist/swagger-markdown/transformers/license.esm.js.map +1 -1
  75. package/dist/swagger-markdown/transformers/license.js +22 -1
  76. package/dist/swagger-markdown/transformers/license.js.map +1 -1
  77. package/dist/swagger-markdown/transformers/path.esm.js +71 -1
  78. package/dist/swagger-markdown/transformers/path.esm.js.map +1 -1
  79. package/dist/swagger-markdown/transformers/path.js +76 -1
  80. package/dist/swagger-markdown/transformers/path.js.map +1 -1
  81. package/dist/swagger-markdown/transformers/pathParameters.esm.js +62 -1
  82. package/dist/swagger-markdown/transformers/pathParameters.esm.js.map +1 -1
  83. package/dist/swagger-markdown/transformers/pathParameters.js +64 -1
  84. package/dist/swagger-markdown/transformers/pathParameters.js.map +1 -1
  85. package/dist/swagger-markdown/transformers/pathResponses.esm.js +45 -1
  86. package/dist/swagger-markdown/transformers/pathResponses.esm.js.map +1 -1
  87. package/dist/swagger-markdown/transformers/pathResponses.js +47 -1
  88. package/dist/swagger-markdown/transformers/pathResponses.js.map +1 -1
  89. package/dist/swagger-markdown/transformers/security.esm.js +41 -1
  90. package/dist/swagger-markdown/transformers/security.esm.js.map +1 -1
  91. package/dist/swagger-markdown/transformers/security.js +43 -1
  92. package/dist/swagger-markdown/transformers/security.js.map +1 -1
  93. package/dist/swagger-markdown/transformers/securityDefinitions.esm.js +51 -1
  94. package/dist/swagger-markdown/transformers/securityDefinitions.esm.js.map +1 -1
  95. package/dist/swagger-markdown/transformers/securityDefinitions.js +57 -1
  96. package/dist/swagger-markdown/transformers/securityDefinitions.js.map +1 -1
  97. package/dist/utils.esm.js +244 -1
  98. package/dist/utils.esm.js.map +1 -1
  99. package/dist/utils.js +256 -1
  100. package/dist/utils.js.map +1 -1
  101. package/package.json +2 -2
package/dist/Layer.js CHANGED
@@ -1,2 +1,253 @@
1
- "use strict";var t=require("./node_modules/tslib/tslib.es6.js"),e=require("./utils.js"),s=require("@ismael1361/utils");class o extends Array{constructor(t="",e={}){super(),this.path=t,this.doc=e,this.__event__=new s.EventEmitter,this.index=-1}addListener(t,e){return this.__event__.on(t,e)}removeListener(t,e){return this.__event__.off(t,e)}pushPath(t,s,h,i,n={}){const r=this.length;this.push({path:h,method:s,type:t,handle:i instanceof o?void 0:i,doc:e.joinDocs(this.doc,...i instanceof o?[i.doc]:e.getDocHandles(...i),n),route:i instanceof o?i:void 0});const a=this.routes.find(t=>t.index===r);return a&&this.__event__.emit("add",a),Object.assign(Object.assign({},this),{index:r,get doc(){var t;return(null===(t=this[r])||void 0===t?void 0:t.doc)||{}},set doc(t){this[r].doc=t}})}route(...t){const s="string"==typeof t[0]?t[0]:"",h=t[1]instanceof o?t[2]:t[0]instanceof o||"string"==typeof t[0]?t[1]:t[0],i=new o(e.joinPath(this.path,s),h);if(t[0]instanceof o||t[1]instanceof o){const e=t[0]instanceof o?t[0]:t[1];return this.push({path:"",method:"use",type:"route",route:i}),i.push({path:"",method:"use",type:"route",route:e}),e}return this.push({path:s,method:"use",type:"route",route:i}),i}static route(t,e){return new o(t,e)}by(t,e,s){const o="string"==typeof t?t:t.path,h="string"==typeof t?e:t,i="string"==typeof t?s:e;return this.route(o,h,i),this}get stack(){return Array.from(this).map(e=>{var{route:s}=e,o=t.__rest(e,["route"]);return Object.assign(Object.assign({},o),{get route(){return null==s?void 0:s.stack}})})}executeMiddlewares(e,s,o){return t.__awaiter(this,void 0,void 0,function*(){const t=[];let h;this.filter(({type:t})=>"middleware"===t).forEach(({handle:e})=>{t.push(...e||[])});for(let i=0;i<t.length&&!s.headersSent;i++){const n=t[i];h=yield Promise.race([n(e,s,i>=t.length-1?o:()=>{})])}return h})}get routes(){const t=[],s=[],o=[];let h=-1;for(const i of this)switch(h++,i.type){case"middleware":{const t=i.handle||[];s.push(...t),o.push(...e.getDocHandles(...t),i.doc||{});break}case"route":i.route.routes.forEach(n=>{const r=[...s,...i.handle||[],...n.handle];t.push({index:h,path:e.joinPath(i.path||"",n.path),method:n.method,handle:r,doc:e.joinDocs(...o,...e.getDocHandles(...r),i.doc||{},n.doc||{})})});break;default:{const n=[...s,...i.handle||[]];t.push({index:h,path:i.path||"",method:i.method,handle:n,doc:e.joinDocs(...o,...e.getDocHandles(...n),i.doc||{})});break}}return t}middleware(t,s={}){return this.pushPath("middleware","use",this.path,t,e.joinDocs(this.doc,s))}get(t,s,o={}){return this.pushPath("layer","get",e.joinPath(this.path,t),s,e.joinDocs(this.doc,o))}post(t,s,o={}){return this.pushPath("layer","post",e.joinPath(this.path,t),s,e.joinDocs(this.doc,o))}put(t,s,o={}){return this.pushPath("layer","put",e.joinPath(this.path,t),s,e.joinDocs(this.doc,o))}delete(t,s,o={}){return this.pushPath("layer","delete",e.joinPath(this.path,t),s,e.joinDocs(this.doc,o))}patch(t,s,o={}){return this.pushPath("layer","patch",e.joinPath(this.path,t),s,e.joinDocs(this.doc,o))}options(t,s,o={}){return this.pushPath("layer","options",e.joinPath(this.path,t),s,e.joinDocs(this.doc,o))}head(t,s,o={}){return this.pushPath("layer","head",e.joinPath(this.path,t),s,e.joinDocs(this.doc,o))}all(t,s,o={}){return this.pushPath("layer","all",e.joinPath(this.path,t),s,e.joinDocs(this.doc,o))}use(t,s,o={}){return this.pushPath("layer","use",e.joinPath(this.path,t),s,e.joinDocs(this.doc,o))}}exports.Layer=o;
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":["Layer","Array","constructor","path","doc","super","this","__event__","EventEmitter","index","addListener","event","listener","on","removeListener","off","pushPath","type","method","handle","length","push","undefined","joinDocs","getDocHandles","route","routes","find","r","emit","Object","assign","_a","args","root","joinPath","by","_path","_route","_doc","stack","from","map","props","__rest","executeMiddlewares","request","response","next","middlewares","resolve","filter","forEach","i","headersSent","middleware","Promise","race","docs","layer","handles","get","post","put","patch","options","head","all","use"],"mappings":"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"}
1
+ {"version":3,"file":"Layer.js","sources":["../src/Layer.ts"],"sourcesContent":[null],"names":["EventEmitter","joinDocs","getDocHandles","joinPath","__rest"],"mappings":"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"}
@@ -1,2 +1,188 @@
1
- import{__awaiter as e}from"./node_modules/tslib/tslib.es6.esm.js";import{Readable as t}from"stream";import{HandleError as n}from"./HandleError.esm.js";import o from"body-parser";const r=e=>o.json(e),s=e=>o.raw(e),i=e=>o.text(e),a=e=>o.urlencoded(e),l=(e="*")=>(t,n,o)=>{const r=t.headers.origin;if(n.setHeader("Access-Control-Allow-Origin","*"===e?"*":r||"*"),n.setHeader("Access-Control-Allow-Methods","GET,PUT,POST,DELETE,OPTIONS"),n.setHeader("Access-Control-Allow-Headers","Content-Type, Authorization, Content-Length, Accept, Origin, X-Requested-With"),n.setHeader("Access-Control-Allow-Credentials","true"),n.setHeader("Access-Control-Expose-Headers","Content-Length, Content-Range"),"OPTIONS"===t.method)return n.status(200).end();o()},d=(...o)=>(r,s,i)=>e(void 0,void 0,void 0,function*(){o=o.map(e=>e.trim().toLowerCase());const e=yield new Promise((e,t)=>{const n=[];r.on("data",e=>n.push(Buffer.from(e))),r.on("end",()=>e(Buffer.concat(n))),r.on("error",t)});if(!r.headers["content-type"]||!r.headers["content-type"].startsWith("multipart/form-data"))throw new n("Invalid content type","BAD_REQUEST",400);const s=r.headers["content-type"].split("boundary=")[1],a=e.toString("binary").split(`--${s}`),l=[];for(const e of a)if(e.includes('filename="')){const[n,...r]=e.split("\r\n\r\n"),s=r.join("\r\n\r\n").trim(),i=Buffer.from(s,"binary"),a=n.match(/name="([^"]+)"/),d=n.match(/filename="([^"]+)"/),c=n.match(/Content-Type: ([^\r\n]+)/);if(a&&d&&c){const e=a[1],n=d[1],r=c[1].trim().toLowerCase();if(o.length>0&&!o.includes(r))continue;l.push({fieldname:e,originalname:n,encoding:"",mimetype:r,size:s.length,stream:new t,destination:"",filename:n,path:"",buffer:i.slice(0,-2)})}}if(!l.length)throw new n("No files were uploaded","BAD_REQUEST",400);r.file=l[0],r.files=l,i()});export{l as cors,d as files,r as json,s as raw,i as text,a as urlencoded};
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":["json","options","BodyParser","raw","text","urlencoded","cors","allowOrigin","req","res","next","origin","headers","setHeader","method","status","end","files","allowedMimes","__awaiter","map","mime","trim","toLowerCase","rawBody","Promise","resolve","reject","chunks","on","chunk","push","Buffer","from","concat","startsWith","HandleError","boundary","split","parts","toString","part","includes","header","body","content","join","buffer","fieldnameMatch","match","filenameMatch","mimetypeMatch","fieldname","filename","contentType","length","originalname","encoding","mimetype","size","stream","Readable","destination","path","slice","file"],"mappings":"kLAyBa,MAAAA,EAAQC,GACbC,EAAWF,KAAKC,GAwBXE,EAAOF,GACZC,EAAWC,IAAIF,GAwBVG,EAAQH,GACbC,EAAWE,KAAKH,GAuBXI,EAAcJ,GACnBC,EAAWG,WAAWJ,GAGjBK,EAAO,CAACC,EAAsB,MACnC,CAACC,EAAKC,EAAKC,KAEjB,MAAMC,EAASH,EAAII,QAAQD,OAU3B,GAPAF,EAAII,UAAU,8BAA+C,MAAhBN,EAAsB,IAAMI,GAAU,KACnFF,EAAII,UAAU,+BAAgC,+BAC9CJ,EAAII,UAAU,+BAAgC,iFAC9CJ,EAAII,UAAU,mCAAoC,QAClDJ,EAAII,UAAU,gCAAiC,iCAG5B,YAAfL,EAAIM,OACP,OAAOL,EAAIM,OAAO,KAAKC,MAGxBN,KAmBWO,EAAQ,IAAIC,IACjB,CAAOV,EAAKC,EAAKC,IAAQS,OAAA,OAAA,OAAA,EAAA,YAC/BD,EAAeA,EAAaE,IAAKC,GAASA,EAAKC,OAAOC,eAEtD,MAAMC,QAAgB,IAAIC,QAAgB,CAACC,EAASC,KACnD,MAAMC,EAAmB,GACzBpB,EAAIqB,GAAG,OAASC,GAAUF,EAAOG,KAAKC,OAAOC,KAAKH,KAClDtB,EAAIqB,GAAG,MAAO,IAAMH,EAAQM,OAAOE,OAAON,KAC1CpB,EAAIqB,GAAG,QAASF,KAGjB,IAAKnB,EAAII,QAAQ,kBAAoBJ,EAAII,QAAQ,gBAAgBuB,WAAW,uBAC3E,MAAM,IAAIC,EAAY,uBAAwB,cAAe,KAG9D,MAAMC,EAAW7B,EAAII,QAAQ,gBAAgB0B,MAAM,aAAa,GAC1DC,EAAQf,EAAQgB,SAAS,UAAUF,MAAM,KAAKD,KAC9CpB,EAAoB,GAE1B,IAAK,MAAMwB,KAAQF,EAClB,GAAIE,EAAKC,SAAS,cAAe,CAChC,MAAOC,KAAWC,GAAQH,EAAKH,MAAM,YAC/BO,EAAUD,EAAKE,KAAK,YAAYxB,OAChCyB,EAASf,OAAOC,KAAKY,EAAS,UAG9BG,EAAiBL,EAAOM,MAAM,kBAC9BC,EAAgBP,EAAOM,MAAM,sBAC7BE,EAAgBR,EAAOM,MAAM,4BAEnC,GAAID,GAAkBE,GAAiBC,EAAe,CACrD,MAAMC,EAAYJ,EAAe,GAC3BK,EAAWH,EAAc,GACzBI,EAAcH,EAAc,GAAG7B,OAAOC,cAC5C,GAAIL,EAAaqC,OAAS,IAAMrC,EAAawB,SAASY,GACrD,SAEDrC,EAAMc,KAAK,CACVqB,UAAWA,EACXI,aAAcH,EACdI,SAAU,GACVC,SAAUJ,EACVK,KAAMd,EAAQU,OACdK,OAAQ,IAAIC,EACZC,YAAa,GACbT,SAAUA,EACVU,KAAM,GACNhB,OAAQA,EAAOiB,MAAM,GAAI,IAE1B,CACD,CAGF,IAAK/C,EAAMsC,OACV,MAAM,IAAInB,EAAY,yBAA0B,cAAe,KAGhE5B,EAAIyD,KAAOhD,EAAM,GACjBT,EAAIS,MAAQA,EAEZP,GACD"}
1
+ {"version":3,"file":"Middlewares.esm.js","sources":["../src/Middlewares.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}