@spinajs/http 2.0.481 → 2.0.484
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/lib/cjs/config/http.d.ts +15 -7
- package/lib/cjs/config/http.d.ts.map +1 -1
- package/lib/cjs/config/http.js +28 -9
- package/lib/cjs/config/http.js.map +1 -1
- package/lib/cjs/controllers.d.ts.map +1 -1
- package/lib/cjs/controllers.js +48 -12
- package/lib/cjs/controllers.js.map +1 -1
- package/lib/cjs/cookie.d.ts +8 -0
- package/lib/cjs/cookie.d.ts.map +1 -0
- package/lib/cjs/cookie.js +40 -0
- package/lib/cjs/cookie.js.map +1 -0
- package/lib/cjs/decorators.d.ts +46 -4
- package/lib/cjs/decorators.d.ts.map +1 -1
- package/lib/cjs/decorators.js +127 -23
- package/lib/cjs/decorators.js.map +1 -1
- package/lib/cjs/error.js +3 -3
- package/lib/cjs/error.js.map +1 -1
- package/lib/cjs/file-middlewares/validation.d.ts +11 -0
- package/lib/cjs/file-middlewares/validation.d.ts.map +1 -1
- package/lib/cjs/file-middlewares/validation.js +52 -9
- package/lib/cjs/file-middlewares/validation.js.map +1 -1
- package/lib/cjs/file-middlewares/zip.d.ts.map +1 -1
- package/lib/cjs/file-middlewares/zip.js +6 -1
- package/lib/cjs/file-middlewares/zip.js.map +1 -1
- package/lib/cjs/index.d.ts +1 -0
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +1 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/interfaces.d.ts +95 -1
- package/lib/cjs/interfaces.d.ts.map +1 -1
- package/lib/cjs/interfaces.js +100 -4
- package/lib/cjs/interfaces.js.map +1 -1
- package/lib/cjs/middlewares/PerfRollup.d.ts +19 -0
- package/lib/cjs/middlewares/PerfRollup.d.ts.map +1 -0
- package/lib/cjs/middlewares/PerfRollup.js +61 -0
- package/lib/cjs/middlewares/PerfRollup.js.map +1 -0
- package/lib/cjs/middlewares/RequestId.d.ts +1 -2
- package/lib/cjs/middlewares/RequestId.d.ts.map +1 -1
- package/lib/cjs/middlewares/RequestId.js +19 -5
- package/lib/cjs/middlewares/RequestId.js.map +1 -1
- package/lib/cjs/middlewares/ResponseTime.d.ts +1 -2
- package/lib/cjs/middlewares/ResponseTime.d.ts.map +1 -1
- package/lib/cjs/middlewares/ResponseTime.js +29 -11
- package/lib/cjs/middlewares/ResponseTime.js.map +1 -1
- package/lib/cjs/response-methods/file.d.ts.map +1 -1
- package/lib/cjs/response-methods/file.js +47 -21
- package/lib/cjs/response-methods/file.js.map +1 -1
- package/lib/cjs/response-methods/index.d.ts +3 -0
- package/lib/cjs/response-methods/index.d.ts.map +1 -1
- package/lib/cjs/response-methods/index.js +3 -0
- package/lib/cjs/response-methods/index.js.map +1 -1
- package/lib/cjs/response-methods/redirect.d.ts +11 -4
- package/lib/cjs/response-methods/redirect.d.ts.map +1 -1
- package/lib/cjs/response-methods/redirect.js +14 -4
- package/lib/cjs/response-methods/redirect.js.map +1 -1
- package/lib/cjs/response-methods/xml.d.ts +17 -0
- package/lib/cjs/response-methods/xml.d.ts.map +1 -0
- package/lib/cjs/response-methods/xml.js +26 -0
- package/lib/cjs/response-methods/xml.js.map +1 -0
- package/lib/cjs/responses.d.ts +10 -0
- package/lib/cjs/responses.d.ts.map +1 -1
- package/lib/cjs/responses.js +94 -35
- package/lib/cjs/responses.js.map +1 -1
- package/lib/cjs/route-args/FromBody.d.ts.map +1 -1
- package/lib/cjs/route-args/FromBody.js +6 -1
- package/lib/cjs/route-args/FromBody.js.map +1 -1
- package/lib/cjs/route-args/FromForm.d.ts +1 -1
- package/lib/cjs/route-args/FromForm.d.ts.map +1 -1
- package/lib/cjs/route-args/FromForm.js +116 -37
- package/lib/cjs/route-args/FromForm.js.map +1 -1
- package/lib/cjs/route-args/FromXml.d.ts +17 -0
- package/lib/cjs/route-args/FromXml.d.ts.map +1 -0
- package/lib/cjs/route-args/FromXml.js +55 -0
- package/lib/cjs/route-args/FromXml.js.map +1 -0
- package/lib/cjs/route-args/RequestContext.d.ts +43 -0
- package/lib/cjs/route-args/RequestContext.d.ts.map +1 -0
- package/lib/cjs/route-args/RequestContext.js +94 -0
- package/lib/cjs/route-args/RequestContext.js.map +1 -0
- package/lib/cjs/route-args/RequestFields.d.ts +1 -1
- package/lib/cjs/route-args/RequestFields.d.ts.map +1 -1
- package/lib/cjs/route-args/RequestFields.js +1 -0
- package/lib/cjs/route-args/RequestFields.js.map +1 -1
- package/lib/cjs/route-args/RouteArgs.d.ts.map +1 -1
- package/lib/cjs/route-args/RouteArgs.js +50 -10
- package/lib/cjs/route-args/RouteArgs.js.map +1 -1
- package/lib/cjs/route-args/index.d.ts +2 -0
- package/lib/cjs/route-args/index.d.ts.map +1 -1
- package/lib/cjs/route-args/index.js +2 -0
- package/lib/cjs/route-args/index.js.map +1 -1
- package/lib/cjs/server.d.ts +36 -3
- package/lib/cjs/server.d.ts.map +1 -1
- package/lib/cjs/server.js +131 -42
- package/lib/cjs/server.js.map +1 -1
- package/lib/mjs/config/http.d.ts +15 -7
- package/lib/mjs/config/http.d.ts.map +1 -1
- package/lib/mjs/config/http.js +28 -9
- package/lib/mjs/config/http.js.map +1 -1
- package/lib/mjs/controllers.d.ts.map +1 -1
- package/lib/mjs/controllers.js +46 -10
- package/lib/mjs/controllers.js.map +1 -1
- package/lib/mjs/cookie.d.ts +8 -0
- package/lib/mjs/cookie.d.ts.map +1 -0
- package/lib/mjs/cookie.js +32 -0
- package/lib/mjs/cookie.js.map +1 -0
- package/lib/mjs/decorators.d.ts +46 -4
- package/lib/mjs/decorators.d.ts.map +1 -1
- package/lib/mjs/decorators.js +121 -24
- package/lib/mjs/decorators.js.map +1 -1
- package/lib/mjs/error.js +3 -3
- package/lib/mjs/error.js.map +1 -1
- package/lib/mjs/file-middlewares/validation.d.ts +11 -0
- package/lib/mjs/file-middlewares/validation.d.ts.map +1 -1
- package/lib/mjs/file-middlewares/validation.js +53 -10
- package/lib/mjs/file-middlewares/validation.js.map +1 -1
- package/lib/mjs/file-middlewares/zip.d.ts.map +1 -1
- package/lib/mjs/file-middlewares/zip.js +6 -1
- package/lib/mjs/file-middlewares/zip.js.map +1 -1
- package/lib/mjs/index.d.ts +1 -0
- package/lib/mjs/index.d.ts.map +1 -1
- package/lib/mjs/index.js +1 -0
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/interfaces.d.ts +95 -1
- package/lib/mjs/interfaces.d.ts.map +1 -1
- package/lib/mjs/interfaces.js +65 -2
- package/lib/mjs/interfaces.js.map +1 -1
- package/lib/mjs/middlewares/PerfRollup.d.ts +19 -0
- package/lib/mjs/middlewares/PerfRollup.d.ts.map +1 -0
- package/lib/mjs/middlewares/PerfRollup.js +58 -0
- package/lib/mjs/middlewares/PerfRollup.js.map +1 -0
- package/lib/mjs/middlewares/RequestId.d.ts +1 -2
- package/lib/mjs/middlewares/RequestId.d.ts.map +1 -1
- package/lib/mjs/middlewares/RequestId.js +19 -5
- package/lib/mjs/middlewares/RequestId.js.map +1 -1
- package/lib/mjs/middlewares/ResponseTime.d.ts +1 -2
- package/lib/mjs/middlewares/ResponseTime.d.ts.map +1 -1
- package/lib/mjs/middlewares/ResponseTime.js +29 -11
- package/lib/mjs/middlewares/ResponseTime.js.map +1 -1
- package/lib/mjs/response-methods/file.d.ts.map +1 -1
- package/lib/mjs/response-methods/file.js +41 -15
- package/lib/mjs/response-methods/file.js.map +1 -1
- package/lib/mjs/response-methods/index.d.ts +3 -0
- package/lib/mjs/response-methods/index.d.ts.map +1 -1
- package/lib/mjs/response-methods/index.js +3 -0
- package/lib/mjs/response-methods/index.js.map +1 -1
- package/lib/mjs/response-methods/redirect.d.ts +11 -4
- package/lib/mjs/response-methods/redirect.d.ts.map +1 -1
- package/lib/mjs/response-methods/redirect.js +15 -5
- package/lib/mjs/response-methods/redirect.js.map +1 -1
- package/lib/mjs/response-methods/xml.d.ts +17 -0
- package/lib/mjs/response-methods/xml.d.ts.map +1 -0
- package/lib/mjs/response-methods/xml.js +22 -0
- package/lib/mjs/response-methods/xml.js.map +1 -0
- package/lib/mjs/responses.d.ts +10 -0
- package/lib/mjs/responses.d.ts.map +1 -1
- package/lib/mjs/responses.js +93 -35
- package/lib/mjs/responses.js.map +1 -1
- package/lib/mjs/route-args/FromBody.d.ts.map +1 -1
- package/lib/mjs/route-args/FromBody.js +6 -1
- package/lib/mjs/route-args/FromBody.js.map +1 -1
- package/lib/mjs/route-args/FromForm.d.ts +1 -1
- package/lib/mjs/route-args/FromForm.d.ts.map +1 -1
- package/lib/mjs/route-args/FromForm.js +114 -38
- package/lib/mjs/route-args/FromForm.js.map +1 -1
- package/lib/mjs/route-args/FromXml.d.ts +17 -0
- package/lib/mjs/route-args/FromXml.d.ts.map +1 -0
- package/lib/mjs/route-args/FromXml.js +52 -0
- package/lib/mjs/route-args/FromXml.js.map +1 -0
- package/lib/mjs/route-args/RequestContext.d.ts +43 -0
- package/lib/mjs/route-args/RequestContext.d.ts.map +1 -0
- package/lib/mjs/route-args/RequestContext.js +91 -0
- package/lib/mjs/route-args/RequestContext.js.map +1 -0
- package/lib/mjs/route-args/RequestFields.d.ts +1 -1
- package/lib/mjs/route-args/RequestFields.d.ts.map +1 -1
- package/lib/mjs/route-args/RequestFields.js +1 -0
- package/lib/mjs/route-args/RequestFields.js.map +1 -1
- package/lib/mjs/route-args/RouteArgs.d.ts.map +1 -1
- package/lib/mjs/route-args/RouteArgs.js +51 -11
- package/lib/mjs/route-args/RouteArgs.js.map +1 -1
- package/lib/mjs/route-args/index.d.ts +2 -0
- package/lib/mjs/route-args/index.d.ts.map +1 -1
- package/lib/mjs/route-args/index.js +2 -0
- package/lib/mjs/route-args/index.js.map +1 -1
- package/lib/mjs/server.d.ts +36 -3
- package/lib/mjs/server.d.ts.map +1 -1
- package/lib/mjs/server.js +132 -43
- package/lib/mjs/server.js.map +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +17 -12
package/lib/mjs/responses.js
CHANGED
|
@@ -4,8 +4,15 @@ import { DI } from '@spinajs/di';
|
|
|
4
4
|
import { Log } from '@spinajs/log-common';
|
|
5
5
|
import * as randomstring from 'randomstring';
|
|
6
6
|
import { Templates } from '@spinajs/templates';
|
|
7
|
-
import
|
|
7
|
+
// NOTE: import the exception, not the `ServerError` *response* from './index.js'.
|
|
8
|
+
// That barrel import created the cycle interfaces -> responses -> index ->
|
|
9
|
+
// response-methods/badRequest -> interfaces, which blew up with
|
|
10
|
+
// "Cannot access 'Response' before initialization" whenever a module other
|
|
11
|
+
// than index.js (eg. server.js) was the entry point. `UnexpectedServerError`
|
|
12
|
+
// is mapped back to the ServerError response by __handle_error__ anyway.
|
|
13
|
+
import { UnexpectedServerError } from '@spinajs/exceptions';
|
|
8
14
|
import * as cs from 'cookie-signature';
|
|
15
|
+
import { XMLBuilder } from 'fast-xml-parser';
|
|
9
16
|
export function _setCoockies(res, options) {
|
|
10
17
|
const cfg = DI.get(Configuration);
|
|
11
18
|
if (!cfg) {
|
|
@@ -45,7 +52,9 @@ export function jsonResponse(model, options) {
|
|
|
45
52
|
res.status(options?.StatusCode ? options?.StatusCode : HTTP_STATUS_CODE.OK);
|
|
46
53
|
_setCoockies(res, options);
|
|
47
54
|
_setHeaders(res, options);
|
|
48
|
-
|
|
55
|
+
// Presence check, not truthiness: 0 / false / '' are valid JSON bodies and
|
|
56
|
+
// must be sent. Only undefined / null mean "no body".
|
|
57
|
+
if (model !== undefined && model !== null) {
|
|
49
58
|
res.json(model);
|
|
50
59
|
}
|
|
51
60
|
else {
|
|
@@ -64,10 +73,36 @@ export function textResponse(model, options) {
|
|
|
64
73
|
res.status(options?.StatusCode ? options?.StatusCode : HTTP_STATUS_CODE.OK);
|
|
65
74
|
_setCoockies(res, options);
|
|
66
75
|
_setHeaders(res, options);
|
|
67
|
-
|
|
76
|
+
// Presence check, not truthiness: 0 / false / '' are valid bodies. Only
|
|
77
|
+
// undefined / null end the response empty (and always terminate it —
|
|
78
|
+
// otherwise a missing body on this fallback path hangs until timeout).
|
|
79
|
+
if (model !== undefined && model !== null) {
|
|
68
80
|
res.set('Content-Type', 'text/plain');
|
|
69
81
|
res.send(JSON.stringify(model));
|
|
70
82
|
}
|
|
83
|
+
else {
|
|
84
|
+
res.end();
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Serializes data to an XML body. The payload should be a plain object graph;
|
|
90
|
+
* arrays and scalars are wrapped under a `<response>` root so the output is a
|
|
91
|
+
* single well-formed document.
|
|
92
|
+
*
|
|
93
|
+
* @param model - data to serialize
|
|
94
|
+
* @param options - response options (status, headers, cookies)
|
|
95
|
+
* @param xmlOptions - fast-xml-parser XMLBuilder options
|
|
96
|
+
*/
|
|
97
|
+
export function xmlResponse(model, options, xmlOptions) {
|
|
98
|
+
return (_req, res) => {
|
|
99
|
+
res.status(options?.StatusCode ? options.StatusCode : HTTP_STATUS_CODE.OK);
|
|
100
|
+
_setCoockies(res, options);
|
|
101
|
+
_setHeaders(res, options);
|
|
102
|
+
res.set('Content-Type', 'application/xml');
|
|
103
|
+
const builder = new XMLBuilder({ ignoreAttributes: false, ...xmlOptions });
|
|
104
|
+
const payload = model !== null && typeof model === 'object' && !Array.isArray(model) ? model : { response: model };
|
|
105
|
+
res.send(builder.build(payload));
|
|
71
106
|
};
|
|
72
107
|
}
|
|
73
108
|
/**
|
|
@@ -164,44 +199,67 @@ export function httpResponse(model, template, options) {
|
|
|
164
199
|
})(req, res);
|
|
165
200
|
}
|
|
166
201
|
};
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
})(req, res);
|
|
186
|
-
});
|
|
202
|
+
const htmlBranch = (req, res) => {
|
|
203
|
+
const fs = DI.resolve('__file_provider__', ['__fs_http_response_templates__']);
|
|
204
|
+
if (!fs) {
|
|
205
|
+
throw new UnexpectedServerError('file provider __fs_http_response_templates__ not set. Pleas set response template file provider for html http default responses !');
|
|
206
|
+
}
|
|
207
|
+
fs.download(template)
|
|
208
|
+
.then((file) => {
|
|
209
|
+
htmlResponse(file, model, options)(req, res);
|
|
210
|
+
})
|
|
211
|
+
.catch((err) => {
|
|
212
|
+
const log = DI.resolve(Log, ['http']);
|
|
213
|
+
log.warn(`Cannot render html file ${template}, error: ${err.message}:${err.stack}`, err);
|
|
214
|
+
fs.download('serverError.pug').then((file) => {
|
|
215
|
+
// try to render server error response
|
|
216
|
+
htmlResponse(file, { error: err }, {
|
|
217
|
+
...options,
|
|
218
|
+
StatusCode: HTTP_STATUS_CODE.INTERNAL_ERROR,
|
|
219
|
+
})(req, res);
|
|
187
220
|
});
|
|
221
|
+
});
|
|
222
|
+
};
|
|
223
|
+
const jsonBranch = (req, res) => {
|
|
224
|
+
if (options && options.StatusCode && options.StatusCode >= 400) {
|
|
225
|
+
errorTransform(req, res);
|
|
188
226
|
}
|
|
189
|
-
else if (req.
|
|
190
|
-
|
|
191
|
-
errorTransform(req, res);
|
|
192
|
-
}
|
|
193
|
-
else {
|
|
194
|
-
if (req.headers['x-data-transform']) {
|
|
195
|
-
dataTransform(req, res);
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
jsonResponse(model, options)(req, res);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
227
|
+
else if (req.headers['x-data-transform']) {
|
|
228
|
+
dataTransform(req, res);
|
|
201
229
|
}
|
|
202
230
|
else {
|
|
231
|
+
jsonResponse(model, options)(req, res);
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
return (req, res) => {
|
|
235
|
+
// Offer the types the server is configured to produce, JSON first so a
|
|
236
|
+
// wildcard / absent Accept (*/*) defaults to JSON rather than HTML. Explicit
|
|
237
|
+
// client preferences (order / q-values) are still honored by req.accepts.
|
|
238
|
+
const offered = [];
|
|
239
|
+
if ((acceptedHeaders & HttpAcceptHeaders.JSON) === HttpAcceptHeaders.JSON)
|
|
240
|
+
offered.push('json');
|
|
241
|
+
if ((acceptedHeaders & HttpAcceptHeaders.HTML) === HttpAcceptHeaders.HTML)
|
|
242
|
+
offered.push('html');
|
|
243
|
+
if ((acceptedHeaders & HttpAcceptHeaders.XML) === HttpAcceptHeaders.XML)
|
|
244
|
+
offered.push('xml');
|
|
245
|
+
const best = offered.length ? req.accepts(offered) : false;
|
|
246
|
+
if (best === 'html') {
|
|
247
|
+
htmlBranch(req, res);
|
|
248
|
+
}
|
|
249
|
+
else if (best === 'json') {
|
|
250
|
+
jsonBranch(req, res);
|
|
251
|
+
}
|
|
252
|
+
else if (best === 'xml') {
|
|
253
|
+
xmlResponse(model, options)(req, res);
|
|
254
|
+
}
|
|
255
|
+
else if (req.accepts('text/plain')) {
|
|
256
|
+
// Client accepts plain text (or the config offers nothing negotiable).
|
|
203
257
|
textResponse(model, options)(req, res);
|
|
204
258
|
}
|
|
259
|
+
else {
|
|
260
|
+
// Client explicitly asked for a media type the server can't produce.
|
|
261
|
+
jsonResponse({ error: { message: 'Not Acceptable', code: HTTP_STATUS_CODE.NOT_ACCEPTABLE } }, { ...options, StatusCode: HTTP_STATUS_CODE.NOT_ACCEPTABLE })(req, res);
|
|
262
|
+
}
|
|
205
263
|
};
|
|
206
264
|
}
|
|
207
265
|
//# sourceMappingURL=responses.js.map
|
package/lib/mjs/responses.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.js","sourceRoot":"","sources":["../../src/responses.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAoB,MAAM,iBAAiB,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE1C,OAAO,KAAK,YAAY,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"responses.js","sourceRoot":"","sources":["../../src/responses.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FromBody.d.ts","sourceRoot":"","sources":["../../../src/route-args/FromBody.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,qBACa,QAAS,SAAQ,SAAS;IACrC,IAAW,aAAa,IAAI,aAAa,CAExC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAC,KAAK,EAAG,OAAO,EAAG,EAAG,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM;;;;
|
|
1
|
+
{"version":3,"file":"FromBody.d.ts","sourceRoot":"","sources":["../../../src/route-args/FromBody.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,qBACa,QAAS,SAAQ,SAAS;IACrC,IAAW,aAAa,IAAI,aAAa,CAExC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAC,KAAK,EAAG,OAAO,EAAG,EAAG,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM;;;;CAenJ"}
|
|
@@ -15,7 +15,12 @@ let FromBody = class FromBody extends RouteArgs {
|
|
|
15
15
|
if (!req.body) {
|
|
16
16
|
return { CallData: callData, Args: null };
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
// Use presence, not truthiness — a body field legitimately holding 0,
|
|
19
|
+
// false or '' must map to that value, not be treated as absent (which
|
|
20
|
+
// would wrongly fall through to passing the whole body).
|
|
21
|
+
const hasNamedField = Object.prototype.hasOwnProperty.call(req.body, param.Name);
|
|
22
|
+
const isSingleBodyParam = [...route.Parameters.values()].filter((p) => p.Type === ParameterType.FromBody).length === 1;
|
|
23
|
+
const arg = hasNamedField ? req.body[param.Name] : isSingleBodyParam ? req.body : null;
|
|
19
24
|
let result = await this.tryHydrateParam(arg, param, route);
|
|
20
25
|
return { CallData: callData, Args: result };
|
|
21
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FromBody.js","sourceRoot":"","sources":["../../../src/route-args/FromBody.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAmB,aAAa,EAAsB,MAAM,kBAAkB,CAAC;AAEtF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGlC,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,SAAS;IACrC,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAC,KAAkB,EAAG,KAAsB,EAAE,GAAoB,EAAE,IAAsB,EAAE,KAAa;QAChJ,IAAG,CAAC,GAAG,CAAC,IAAI,EAAC,CAAC;YACZ,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5C,CAAC;QAED,MAAM,
|
|
1
|
+
{"version":3,"file":"FromBody.js","sourceRoot":"","sources":["../../../src/route-args/FromBody.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAmB,aAAa,EAAsB,MAAM,kBAAkB,CAAC;AAEtF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGlC,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,SAAS;IACrC,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAC,KAAkB,EAAG,KAAsB,EAAE,GAAoB,EAAE,IAAsB,EAAE,KAAa;QAChJ,IAAG,CAAC,GAAG,CAAC,IAAI,EAAC,CAAC;YACZ,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5C,CAAC;QAED,sEAAsE;QACtE,sEAAsE;QACtE,yDAAyD;QACzD,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjF,MAAM,iBAAiB,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;QACvH,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAEvF,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC9C,CAAC;CACF,CAAA;AApBY,QAAQ;IADpB,UAAU,EAAE;GACA,QAAQ,CAoBpB"}
|
|
@@ -85,7 +85,7 @@ export declare class FromCSV extends FromFormBase {
|
|
|
85
85
|
export declare class FromFormField extends FromFormBase {
|
|
86
86
|
get SupportedType(): ParameterType;
|
|
87
87
|
extract(callData: IRouteCall, _args: unknown[], param: IRouteParameter, req: Request, res: express.Response, route?: IRoute): Promise<{
|
|
88
|
-
Args:
|
|
88
|
+
Args: any;
|
|
89
89
|
CallData: IRouteCall;
|
|
90
90
|
}>;
|
|
91
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FromForm.d.ts","sourceRoot":"","sources":["../../../src/route-args/FromForm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAyD,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AACtM,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAmB,EAAE,MAAM,EAAE,KAAK,EAAgB,MAAM,YAAY,CAAC;AACrE,OAAO,EAAU,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG/D,OAAO,EAAE,EAAE,EAAY,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,GAAG,EAAU,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"FromForm.d.ts","sourceRoot":"","sources":["../../../src/route-args/FromForm.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ import { RouteArgs } from './RouteArgs.js';
|
|
|
11
11
|
import { ParameterType } from '../interfaces.js';
|
|
12
12
|
import { IncomingForm } from 'formidable';
|
|
13
13
|
import { Config } from '@spinajs/configuration';
|
|
14
|
-
import { Autoinject, DI, Injectable, NewInstance } from '@spinajs/di';
|
|
14
|
+
import { Autoinject, DI, Injectable, NewInstance, TypedArray } from '@spinajs/di';
|
|
15
15
|
import { parse } from 'csv';
|
|
16
16
|
import { fs, fsNative } from '@spinajs/fs';
|
|
17
17
|
import { createReadStream, promises } from 'fs';
|
|
@@ -23,6 +23,7 @@ import { EntityTooLargeException } from '../exceptions.js';
|
|
|
23
23
|
import { BadRequest, Exception, IOFail } from '@spinajs/exceptions';
|
|
24
24
|
import { FileSystem } from "@spinajs/fs";
|
|
25
25
|
import { ImmediateFileUploader } from '../uploaders/ImmediateFileUploader.js';
|
|
26
|
+
import qs from 'qs';
|
|
26
27
|
const parseForm = (req, options) => {
|
|
27
28
|
const form = new IncomingForm(options);
|
|
28
29
|
return new Promise((res, rej) => {
|
|
@@ -41,6 +42,40 @@ const parseForm = (req, options) => {
|
|
|
41
42
|
});
|
|
42
43
|
});
|
|
43
44
|
};
|
|
45
|
+
/**
|
|
46
|
+
* Collects settled upload results. All uploads are attempted (we use
|
|
47
|
+
* allSettled so one failure doesn't abort the rest), but any rejection is
|
|
48
|
+
* surfaced as an IOFail instead of being silently dropped — otherwise a failed
|
|
49
|
+
* upload would just vanish from the result with the client getting a 200 and
|
|
50
|
+
* fewer (or zero) files than it sent.
|
|
51
|
+
*/
|
|
52
|
+
function collectUploads(results) {
|
|
53
|
+
const rejected = results.filter((r) => r.status === 'rejected');
|
|
54
|
+
if (rejected.length > 0) {
|
|
55
|
+
const reasons = rejected.map((r) => r.reason?.message ?? String(r.reason)).join('; ');
|
|
56
|
+
throw new IOFail(`Failed to upload ${rejected.length} file(s): ${reasons}`);
|
|
57
|
+
}
|
|
58
|
+
return results.map((r) => r.value);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Best-effort removal of the intermediate formidable temp files. Used on the
|
|
62
|
+
* error path so a failed upload/validation doesn't leak files in the upload
|
|
63
|
+
* temp dir. Swallows per-file errors (a file may already have been moved or
|
|
64
|
+
* removed by a transform middleware).
|
|
65
|
+
*/
|
|
66
|
+
async function cleanupTempFiles(files) {
|
|
67
|
+
await Promise.allSettled(files.map(async (f) => {
|
|
68
|
+
const p = f?.OriginalFile?.filepath;
|
|
69
|
+
if (!p)
|
|
70
|
+
return;
|
|
71
|
+
try {
|
|
72
|
+
await promises.unlink(p);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
/* already gone / moved — nothing to clean */
|
|
76
|
+
}
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
44
79
|
export class FromFormBase extends RouteArgs {
|
|
45
80
|
async extract(callData, _args, routeParameter, req, _res, _route) {
|
|
46
81
|
if (!this.FormData) {
|
|
@@ -145,31 +180,43 @@ let FromFile = class FromFile extends FromFormBase {
|
|
|
145
180
|
const { service, options } = m;
|
|
146
181
|
return DI.resolve(service, [options]);
|
|
147
182
|
});
|
|
148
|
-
|
|
149
|
-
for (const
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
183
|
+
try {
|
|
184
|
+
for (const m of middlewares) {
|
|
185
|
+
for (const f of uplFiles) {
|
|
186
|
+
this.Log.trace(`Executing file middleware ${m.constructor.name} for file ${f.Name}`);
|
|
187
|
+
const result = await m.beforeUpload(f, uploadOptions);
|
|
188
|
+
// merge transform result
|
|
189
|
+
Object.assign(f, result);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// copy to target fs if different than default temp fs
|
|
193
|
+
if (uploadFs && this.DefaultUploadFs.Name !== uploadFs.Name) {
|
|
194
|
+
const fu = DI.resolve(ImmediateFileUploader, [{ sourceFs: this.DefaultUploadFs, deleteSource: true }]);
|
|
195
|
+
const pResults = await Promise.allSettled(uplFiles.map((f) => fu.upload(f)));
|
|
196
|
+
uFiles = collectUploads(pResults);
|
|
197
|
+
}
|
|
198
|
+
// if any uploader is set in options, use it to upload files
|
|
199
|
+
// additionaly
|
|
200
|
+
if (uploadOptions.uploader) {
|
|
201
|
+
const type = uploadOptions.uploader.service ?? uploadOptions.uploader;
|
|
202
|
+
const options = uploadOptions.uploader.options ?? {};
|
|
203
|
+
const fu = DI.resolve(type, [options]);
|
|
204
|
+
const pResults = await Promise.allSettled(uplFiles.map((f) => fu.upload(f)));
|
|
205
|
+
uFiles = collectUploads(pResults);
|
|
154
206
|
}
|
|
155
207
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
// if any uploader is set in options, use it to upload files
|
|
163
|
-
// additionaly
|
|
164
|
-
if (uploadOptions.uploader) {
|
|
165
|
-
const type = uploadOptions.uploader.service ?? uploadOptions.uploader;
|
|
166
|
-
const options = uploadOptions.uploader.options ?? {};
|
|
167
|
-
const fu = DI.resolve(type, [options]);
|
|
168
|
-
const pResults = await Promise.allSettled(uplFiles.map((f) => fu.upload(f)));
|
|
169
|
-
uFiles = pResults.filter((r) => r.status === 'fulfilled').map((r) => r.value);
|
|
208
|
+
catch (err) {
|
|
209
|
+
// A failed validation / middleware / upload would otherwise leave the
|
|
210
|
+
// intermediate formidable temp files in the upload temp dir forever.
|
|
211
|
+
// Best-effort clean them up before propagating the error.
|
|
212
|
+
await cleanupTempFiles(uplFiles);
|
|
213
|
+
throw err;
|
|
170
214
|
}
|
|
215
|
+
// @Files() forces an array result via the asArray option; @File() infers it
|
|
216
|
+
// from the declared parameter type.
|
|
217
|
+
const asArray = param.RuntimeType.name === 'Array' || param.Options?.asArray === true;
|
|
171
218
|
return Object.assign(result, {
|
|
172
|
-
Args:
|
|
219
|
+
Args: asArray ? uFiles : uFiles[0],
|
|
173
220
|
});
|
|
174
221
|
}
|
|
175
222
|
};
|
|
@@ -201,13 +248,26 @@ let FromJsonFile = class FromJsonFile extends FromFile {
|
|
|
201
248
|
throw new BadRequest('Missing JSON file');
|
|
202
249
|
}
|
|
203
250
|
const sourceFile = file.filepath;
|
|
204
|
-
|
|
205
|
-
|
|
251
|
+
// `param.Options` is undefined when @JsonFile() is used with no options, so
|
|
252
|
+
// guard every access. Accept both `Encoding` and the IUploadOptions
|
|
253
|
+
// `encoding` casing; default to utf-8 for JSON parsing.
|
|
254
|
+
const encoding = (param.Options?.Encoding ?? param.Options?.encoding ?? 'utf-8');
|
|
255
|
+
const content = await promises.readFile(sourceFile, { encoding, flag: 'r' });
|
|
256
|
+
if (param.Options?.DeleteFile) {
|
|
206
257
|
await promises.unlink(sourceFile);
|
|
207
258
|
}
|
|
259
|
+
// A malformed uploaded JSON file is a client error (400), not an unhandled
|
|
260
|
+
// 500 out of the extractor.
|
|
261
|
+
let parsed;
|
|
262
|
+
try {
|
|
263
|
+
parsed = JSON.parse(content.toString());
|
|
264
|
+
}
|
|
265
|
+
catch (err) {
|
|
266
|
+
throw new BadRequest(`Uploaded JSON file is invalid: ${err.message}`);
|
|
267
|
+
}
|
|
208
268
|
return {
|
|
209
269
|
...data,
|
|
210
|
-
Args:
|
|
270
|
+
Args: parsed,
|
|
211
271
|
};
|
|
212
272
|
}
|
|
213
273
|
};
|
|
@@ -237,7 +297,14 @@ let FromCSV = class FromCSV extends FromFormBase {
|
|
|
237
297
|
if (schema) {
|
|
238
298
|
this.validateCsvData(csvData, schema);
|
|
239
299
|
}
|
|
240
|
-
|
|
300
|
+
// The param describes the WHOLE csv file, but rows are hydrated one at a
|
|
301
|
+
// time. When it is declared as a typed array ( @Type(Array.ofType(X)) ) each
|
|
302
|
+
// row must be hydrated to the ELEMENT type X - feeding a single row to the
|
|
303
|
+
// whole-array TypedArray path would reject it as "must be a JSON array",
|
|
304
|
+
// and would look for an array schema where a row schema is wanted.
|
|
305
|
+
// @Body @Type(Array.ofType(X)) keeps the whole-array path, untouched.
|
|
306
|
+
const rowParam = param.RuntimeType instanceof TypedArray ? { ...param, RuntimeType: param.RuntimeType.Type } : param;
|
|
307
|
+
const args = await Promise.all(csvData.map((x) => this.tryHydrateParam(x, rowParam, route)));
|
|
241
308
|
return {
|
|
242
309
|
...data,
|
|
243
310
|
Args: args,
|
|
@@ -299,12 +366,17 @@ let FromFormField = class FromFormField extends FromFormBase {
|
|
|
299
366
|
if (!field) {
|
|
300
367
|
throw new BadRequest(`Form field ${param.Name} is required`);
|
|
301
368
|
}
|
|
369
|
+
// By default a form field is delivered as an array; collapse to a single
|
|
370
|
+
// value when the route param isn't an array and only one value was sent,
|
|
371
|
+
// otherwise pass the whole values array (NOT `data`, the CallData wrapper).
|
|
372
|
+
const raw = field.length === 1 && param.RuntimeType.name !== 'Array' ? field[0] : field;
|
|
373
|
+
// Run through the standard hydration/validation path so a @FormField(schema)
|
|
374
|
+
// is actually enforced and the value is coerced to the declared runtime type
|
|
375
|
+
// (form fields always arrive as strings).
|
|
376
|
+
const result = await this.tryHydrateParam(raw, param, route);
|
|
302
377
|
return {
|
|
303
378
|
...data,
|
|
304
|
-
|
|
305
|
-
// we assume that if length is 1 we want single param
|
|
306
|
-
// when route param is not array
|
|
307
|
-
Args: field.length === 1 && param.RuntimeType.name !== 'Array' ? field[0] : data,
|
|
379
|
+
Args: result,
|
|
308
380
|
};
|
|
309
381
|
}
|
|
310
382
|
};
|
|
@@ -323,14 +395,18 @@ let FromForm = class FromForm extends FromFormBase {
|
|
|
323
395
|
}
|
|
324
396
|
async extract(callData, _args, param, req, res, route) {
|
|
325
397
|
const data = await super.extract(callData, _args, param, req, res, route);
|
|
326
|
-
|
|
327
|
-
//
|
|
328
|
-
//
|
|
329
|
-
//
|
|
330
|
-
const
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
398
|
+
// Build a querystring from the raw form fields (keys keep their `[]` / `[key]`
|
|
399
|
+
// bracket syntax, values are percent-encoded) and let qs parse it. This
|
|
400
|
+
// yields arrays for `field[]` / repeated fields and nested objects for
|
|
401
|
+
// `field[key]` / `field[a][b]`, matching express.urlencoded({ extended: true }).
|
|
402
|
+
const pairs = [];
|
|
403
|
+
for (const [key, values] of Object.entries(this.FormData.Fields)) {
|
|
404
|
+
for (const v of values ?? []) {
|
|
405
|
+
pairs.push(`${key}=${encodeURIComponent(String(v))}`);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
const fData = qs.parse(pairs.join('&'));
|
|
409
|
+
const result = await this.tryHydrateParam(fData, param, route);
|
|
334
410
|
return {
|
|
335
411
|
...data,
|
|
336
412
|
Args: result,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FromForm.js","sourceRoot":"","sources":["../../../src/route-args/FromForm.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FromForm.js","sourceRoot":"","sources":["../../../src/route-args/FromForm.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAoB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAmB,aAAa,EAAsI,MAAM,kBAAkB,CAAC;AAEtM,OAAmB,EAAiB,YAAY,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,MAAM,EAAiB,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAC5B,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAEhD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,MAAM,IAAI,CAAC;AA0BpB,MAAM,SAAS,GAAG,CAAC,GAAoB,EAAE,OAAY,EAAE,EAAE;IACvD,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,IAAI,OAAO,CAAW,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACxC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAQ,EAAE,MAAc,EAAE,KAAY,EAAE,EAAE;YACzD,IAAI,GAAG,EAAE,CAAC;gBACR,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;oBACjB,KAAK,IAAI;wBACP,GAAG,CAAC,IAAI,uBAAuB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;wBACnD,MAAM;oBACR;wBACE,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzC,CAAC;gBACD,OAAO;YACT,CAAC;YAED,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,OAA8C;IACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;IAC5F,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,MAAgB,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjG,MAAM,IAAI,MAAM,CAAC,oBAAoB,QAAQ,CAAC,MAAM,aAAa,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAQ,OAAmD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAClF,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,gBAAgB,CAAC,KAAsB;IACpD,MAAM,OAAO,CAAC,UAAU,CACtB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACpB,MAAM,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC;QACpC,IAAI,CAAC,CAAC;YAAE,OAAO;QACf,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,6CAA6C;QAC/C,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,OAAgB,YAAa,SAAQ,SAAS;IAO3C,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAgB,EAAE,cAA+B,EAAE,GAAY,EAAE,IAAsB,EAAE,MAAe;QACjJ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEnB,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;gBAClC,MAAM,IAAI,MAAM,CAAC,oHAAoH,CAAC,CAAC;YACzI,CAAC;YAED,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,YAAY,QAAQ,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,MAAM,CAAC,yJAAyJ,CAAC,CAAC;YAC9K,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC5E,MAAM,IAAI,MAAM,CAAC,wHAAwH,CAAC,CAAC;YAC7I,CAAC;YAED,MAAM,OAAO,GAAG;gBACd,GAAG,cAAc,CAAC,OAAO;gBACzB,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ;aACjD,CAAC;YACF,IAAI,CAAC,QAAQ,GAAG,QAAQ,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,MAAM,GAAG;YACb,QAAQ,EAAE;gBACR,GAAG,QAAQ;gBACX,OAAO,EAAE;oBACP,IAAI,EAAE,IAAI,CAAC,QAAQ;iBACpB;aACF;YACD,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AApCW;IADT,UAAU,CAAC,kCAAkC,CAAC;8BACpB,EAAE;qDAAC;AAwCzB,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,YAAY;IAaxC,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,YAAmB,QAAkB;QACnC,KAAK,EAAE,CAAC;QADS,aAAQ,GAAR,QAAQ,CAAU;QAd9B,aAAQ,GAAY,IAAI,CAAC;IAgBhC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAgB,EAAE,KAAsC,EAAE,GAAY,EAAE,GAAqB,EAAE,KAAc;QACtJ,yCAAyC;QACzC,uEAAuE;QAEvE,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,kCAAkC,CAAC;QACxF,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAK,mBAAmB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAE/D,6CAA6C;QAC7C,4BAA4B;QAC5B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAE5E,qBAAqB;QACrB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzC,IAAI,aAAa,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,gBAAgB,CAAC,QAAQ,KAAK,CAAC,IAAI,cAAc,EAAE;gBAC3D;oBACE,YAAY,EAAE,KAAK,CAAC,IAAI;oBACxB,OAAO,EAAE,cAAc;oBACvB,OAAO,EAAE,UAAU;oBACnB,MAAM,EAAE,EAAE;oBACV,UAAU,EAAE,YAAY;oBACxB,YAAY,EAAE,UAAU;iBACzB;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAA8B,EAAE,EAAE;YAE7D,IAAG,CAAC,CAAC,EAAC,CAAC;gBACJ,MAAM,IAAI,gBAAgB,CAAC,QAAQ,KAAK,CAAC,IAAI,cAAc,EAAE;oBAC3D;wBACE,YAAY,EAAE,KAAK,CAAC,IAAI;wBACxB,OAAO,EAAE,cAAc;wBACvB,OAAO,EAAE,UAAU;wBACnB,MAAM,EAAE,EAAE;wBACV,UAAU,EAAE,YAAY;wBACxB,YAAY,EAAE,UAAU;qBACzB;iBACF,CAAC,CAAC;YACL,CAAC;YAED,MAAM,YAAY,GAAkB;gBAClC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC9B,IAAI,EAAE,CAAC,CAAC,gBAAgB,IAAI,EAAE;gBAC9B,IAAI,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;gBACtB,gBAAgB,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS;gBACtC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,SAAS;gBACzB,QAAQ,EAAE,QAAQ;gBAClB,YAAY,EAAE,CAAC;aAChB,CAAC;YAEF,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAyB,QAAQ,CAAC;QAE5C,MAAM,qBAAqB,GAAG;YAC5B,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC;YACtC,GAAG,CAAC,aAAa,CAAC,WAAW,IAAI,EAAE,CAAC;SACrC,CAAC;QAEF,MAAM,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAClD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;gBACrD,OAAO,EAAE,CAAC,OAAO,CAAuB,CAAQ,CAAC,CAAC;YACpD,CAAC;YAED,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAqE,CAAC;YACnG,OAAO,EAAE,CAAC,OAAO,CAAuB,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC5B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;oBACzB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBACrF,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;oBACtD,yBAAyB;oBACzB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YAED,sDAAsD;YACtD,IAAI,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC5D,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAmB,qBAAqB,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACzH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7E,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;YAED,4DAA4D;YAC5D,cAAc;YACd,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAI,aAAa,CAAC,QAAgB,CAAC,OAAO,IAAI,aAAa,CAAC,QAAQ,CAAC;gBAC/E,MAAM,OAAO,GAAI,aAAa,CAAC,QAAgB,CAAC,OAAO,IAAI,EAAE,CAAC;gBAE9D,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAmB,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;gBACzD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7E,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sEAAsE;YACtE,qEAAqE;YACrE,0DAA0D;YAC1D,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACjC,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,4EAA4E;QAC5E,oCAAoC;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,IAAK,KAAK,CAAC,OAAe,EAAE,OAAO,KAAK,IAAI,CAAC;QAC/F,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;YAC3B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;SACnC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAnIW;IADT,MAAM,CAAC,MAAM,CAAC;8BACA,GAAG;qCAAC;AAKT;IAHT,MAAM,CAAC,yBAAyB,EAAE;QACjC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;KAClD,CAAC;;wDACiE;AAXxD,QAAQ;IAFpB,UAAU,EAAE;IACZ,WAAW,EAAE;;GACD,QAAQ,CAyIpB;;AAIM,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,QAAQ;IACxC,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,YAAY,CAAC;IACpC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAgB,EAAE,KAAsB,EAAE,GAAY,EAAE,GAAqB,EAAE,KAAc;QACtI,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEtE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;QACjC,4EAA4E;QAC5E,oEAAoE;QACpE,wDAAwD;QACxD,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAmB,CAAC;QACnG,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAE7E,IAAI,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;YAC9B,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;QAED,2EAA2E;QAC3E,4BAA4B;QAC5B,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,UAAU,CAAC,kCAAmC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,MAAM;SACb,CAAC;IACJ,CAAC;CACF,CAAA;AAvCY,YAAY;IAFxB,UAAU,EAAE;IACZ,WAAW,EAAE;GACD,YAAY,CAuCxB;;AA0BM,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,YAAY;IAIvC,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAgB,EAAE,KAAmC,EAAE,GAAY,EAAE,GAAqB,EAAE,KAAc;QACnJ,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAE1E,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEtE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;QACjC,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAU,CAAC;QAElE,IAAI,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;YAC9B,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;QAED,0CAA0C;QAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;QACrD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QAED,yEAAyE;QACzE,6EAA6E;QAC7E,2EAA2E;QAC3E,yEAAyE;QACzE,mEAAmE;QACnE,sEAAsE;QACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,YAAY,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,WAAW,EAAG,KAAK,CAAC,WAAmC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAE9I,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAM,CAAC,CAAC,CAAC,CAAC;QAE9F,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACO,eAAe,CAAC,IAAW,EAAE,MAAuB;QAC5D,MAAM,SAAS,GAA0C,EAAE,CAAC;QAE5D,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC1B,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAClE,IAAI,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC;gBACvB,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CACvD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjB,GAAG,CAAC;gBACJ,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,YAAY,IAAI,EAAE,EAAE;gBAC/C,OAAO,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE;aACpC,CAAC,CAAC,CACJ,CAAC;YAEF,MAAM,IAAI,gBAAgB,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAES,KAAK,CAAC,QAAQ,CAAC,KAAmC,EAAE,IAAY;QACxE,MAAM,IAAI,GAAU,EAAE,CAAC;QACvB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QAElE,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC9B,gBAAgB,CAAC,IAAI,CAAC;iBACnB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;iBACvB,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC,CAAC;iBAChF,EAAE,CAAC,MAAM,EAAE,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACxC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAxFW;IADT,UAAU,EAAE;8BACS,aAAa;0CAAC;AAFzB,OAAO;IAFnB,UAAU,EAAE;IACZ,WAAW,EAAE;GACD,OAAO,CA0FnB;;AAIM,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,YAAY;IAC7C,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,SAAS,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAgB,EAAE,KAAsB,EAAE,GAAY,EAAE,GAAqB,EAAE,KAAc;QACtI,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,UAAU,CAAC,cAAc,KAAK,CAAC,IAAI,cAAc,CAAC,CAAC;QAC/D,CAAC;QAED,yEAAyE;QACzE,yEAAyE;QACzE,4EAA4E;QAC5E,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAExF,6EAA6E;QAC7E,6EAA6E;QAC7E,0CAA0C;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAM,CAAC,CAAC;QAE9D,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,MAAM;SACb,CAAC;IACJ,CAAC;CACF,CAAA;AA5BY,aAAa;IAFzB,UAAU,EAAE;IACZ,WAAW,EAAE;GACD,aAAa,CA4BzB;;AAGM,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,YAAY;IACxC,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,YAAY,IAAS;QACnB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAgB,EAAE,KAAsB,EAAE,GAAY,EAAE,GAAqB,EAAE,KAAc;QACtI,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAE1E,+EAA+E;QAC/E,wEAAwE;QACxE,uEAAuE;QACvE,iFAAiF;QACjF,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,KAAK,MAAM,CAAC,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAM,CAAC,CAAC;QAEhE,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,MAAM;SACb,CAAC;IACJ,CAAC;CACF,CAAA;AAhCY,QAAQ;IAFpB,UAAU,EAAE;IACZ,WAAW,EAAE;;GACD,QAAQ,CAgCpB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { RouteArgs, IRouteArgsResult } from './RouteArgs.js';
|
|
2
|
+
import { IRouteParameter, ParameterType, IRouteCall, Request } from '../interfaces.js';
|
|
3
|
+
import { X2jOptions } from 'fast-xml-parser';
|
|
4
|
+
/**
|
|
5
|
+
* Parses an XML request body into a plain object.
|
|
6
|
+
*
|
|
7
|
+
* Relies on the `express.text` body parser (configured for XML content types)
|
|
8
|
+
* having placed the raw XML string in `req.body`. `@FromXml()` may be given
|
|
9
|
+
* fast-xml-parser {@link X2jOptions} to customise parsing.
|
|
10
|
+
*
|
|
11
|
+
* Malformed XML is reported as a 400 BadRequest rather than an unhandled 500.
|
|
12
|
+
*/
|
|
13
|
+
export declare class FromXmlRouteArgs extends RouteArgs {
|
|
14
|
+
get SupportedType(): ParameterType | string;
|
|
15
|
+
extract(callData: IRouteCall, _args: unknown[], param: IRouteParameter<Partial<X2jOptions>>, req: Request): Promise<IRouteArgsResult>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=FromXml.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FromXml.d.ts","sourceRoot":"","sources":["../../../src/route-args/FromXml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGvF,OAAO,EAA2B,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEtE;;;;;;;;GAQG;AACH,qBACa,gBAAiB,SAAQ,SAAS;IAC7C,IAAW,aAAa,IAAI,aAAa,GAAG,MAAM,CAEjD;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAyBnJ"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { RouteArgs } from './RouteArgs.js';
|
|
8
|
+
import { ParameterType } from '../interfaces.js';
|
|
9
|
+
import { Injectable } from '@spinajs/di';
|
|
10
|
+
import { BadRequest } from '@spinajs/exceptions';
|
|
11
|
+
import { XMLParser, XMLValidator } from 'fast-xml-parser';
|
|
12
|
+
/**
|
|
13
|
+
* Parses an XML request body into a plain object.
|
|
14
|
+
*
|
|
15
|
+
* Relies on the `express.text` body parser (configured for XML content types)
|
|
16
|
+
* having placed the raw XML string in `req.body`. `@FromXml()` may be given
|
|
17
|
+
* fast-xml-parser {@link X2jOptions} to customise parsing.
|
|
18
|
+
*
|
|
19
|
+
* Malformed XML is reported as a 400 BadRequest rather than an unhandled 500.
|
|
20
|
+
*/
|
|
21
|
+
let FromXmlRouteArgs = class FromXmlRouteArgs extends RouteArgs {
|
|
22
|
+
get SupportedType() {
|
|
23
|
+
return ParameterType.FromXml;
|
|
24
|
+
}
|
|
25
|
+
async extract(callData, _args, param, req) {
|
|
26
|
+
const body = req.body;
|
|
27
|
+
// No body -> nothing to parse (keep optional params optional).
|
|
28
|
+
if (body === undefined || body === null || body === '') {
|
|
29
|
+
return { CallData: callData, Args: null };
|
|
30
|
+
}
|
|
31
|
+
// Already an object (some upstream parser handled it) -> pass through.
|
|
32
|
+
if (typeof body !== 'string') {
|
|
33
|
+
return { CallData: callData, Args: body };
|
|
34
|
+
}
|
|
35
|
+
const valid = XMLValidator.validate(body);
|
|
36
|
+
if (valid !== true) {
|
|
37
|
+
throw new BadRequest(`Invalid XML body: ${valid.err?.msg ?? 'malformed XML'}`);
|
|
38
|
+
}
|
|
39
|
+
const parser = new XMLParser({ ignoreAttributes: false, ...(param.Options ?? {}) });
|
|
40
|
+
try {
|
|
41
|
+
return { CallData: callData, Args: parser.parse(body) };
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
throw new BadRequest(`Invalid XML body: ${err.message}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
FromXmlRouteArgs = __decorate([
|
|
49
|
+
Injectable()
|
|
50
|
+
], FromXmlRouteArgs);
|
|
51
|
+
export { FromXmlRouteArgs };
|
|
52
|
+
//# sourceMappingURL=FromXml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FromXml.js","sourceRoot":"","sources":["../../../src/route-args/FromXml.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAmB,aAAa,EAAuB,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAc,MAAM,iBAAiB,CAAC;AAEtE;;;;;;;;GAQG;AAEI,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,SAAS;IAC7C,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAgB,EAAE,KAA2C,EAAE,GAAY;QACpH,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAEtB,+DAA+D;QAC/D,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YACvD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5C,CAAC;QAED,uEAAuE;QACvE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5C,CAAC;QAED,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,UAAU,CAAC,qBAAqB,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC;YACH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,UAAU,CAAC,qBAAsB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;CACF,CAAA;AA9BY,gBAAgB;IAD5B,UAAU,EAAE;GACA,gBAAgB,CA8B5B"}
|