@spinajs/http 2.0.180 → 2.0.182
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/bootstrap.d.ts +4 -4
- package/lib/cjs/bootstrap.js +29 -29
- package/lib/cjs/bootstrap.js.map +1 -1
- package/lib/cjs/config/http.d.ts +58 -58
- package/lib/cjs/config/http.js +86 -86
- package/lib/cjs/controllers.d.ts +48 -48
- package/lib/cjs/controllers.d.ts.map +1 -1
- package/lib/cjs/controllers.js +307 -312
- package/lib/cjs/controllers.js.map +1 -1
- package/lib/cjs/decorators.d.ts +183 -183
- package/lib/cjs/decorators.js +441 -441
- package/lib/cjs/hydrators/DateTimeHydrator.d.ts +5 -5
- package/lib/cjs/hydrators/DateTimeHydrator.js +36 -36
- package/lib/cjs/hydrators/DateTimeHydrator.js.map +1 -1
- package/lib/cjs/index.d.ts +9 -9
- package/lib/cjs/index.js +25 -25
- package/lib/cjs/interfaces.d.ts +569 -550
- package/lib/cjs/interfaces.d.ts.map +1 -1
- package/lib/cjs/interfaces.js +266 -259
- package/lib/cjs/interfaces.js.map +1 -1
- package/lib/cjs/middlewares/RealIp.d.ts +8 -8
- package/lib/cjs/middlewares/RealIp.js +34 -34
- package/lib/cjs/middlewares/RealIp.js.map +1 -1
- package/lib/cjs/middlewares/RequestId.d.ts +8 -8
- package/lib/cjs/middlewares/RequestId.js +35 -35
- package/lib/cjs/middlewares/RequestId.js.map +1 -1
- package/lib/cjs/middlewares/ResponseTime.d.ts +10 -10
- package/lib/cjs/middlewares/ResponseTime.js +41 -41
- package/lib/cjs/middlewares/ResponseTime.js.map +1 -1
- package/lib/cjs/response-methods/badRequest.d.ts +12 -12
- package/lib/cjs/response-methods/badRequest.js +20 -20
- package/lib/cjs/response-methods/conflict.d.ts +12 -12
- package/lib/cjs/response-methods/conflict.js +20 -20
- package/lib/cjs/response-methods/cookieResponse.d.ts +19 -19
- package/lib/cjs/response-methods/cookieResponse.js +73 -73
- package/lib/cjs/response-methods/created.d.ts +12 -12
- package/lib/cjs/response-methods/created.js +19 -19
- package/lib/cjs/response-methods/errorResponse.d.ts +7 -7
- package/lib/cjs/response-methods/errorResponse.js +24 -24
- package/lib/cjs/response-methods/file.d.ts +26 -26
- package/lib/cjs/response-methods/file.d.ts.map +1 -1
- package/lib/cjs/response-methods/file.js +112 -133
- package/lib/cjs/response-methods/file.js.map +1 -1
- package/lib/cjs/response-methods/forbidden.d.ts +12 -12
- package/lib/cjs/response-methods/forbidden.js +20 -20
- package/lib/cjs/response-methods/index.d.ts +13 -13
- package/lib/cjs/response-methods/index.js +29 -29
- package/lib/cjs/response-methods/noContent.d.ts +12 -12
- package/lib/cjs/response-methods/noContent.js +20 -20
- package/lib/cjs/response-methods/notAcceptable.d.ts +13 -13
- package/lib/cjs/response-methods/notAcceptable.js +21 -21
- package/lib/cjs/response-methods/notAllowed.d.ts +12 -12
- package/lib/cjs/response-methods/notAllowed.js +20 -20
- package/lib/cjs/response-methods/notFound.d.ts +12 -12
- package/lib/cjs/response-methods/notFound.js +20 -20
- package/lib/cjs/response-methods/ok.d.ts +12 -12
- package/lib/cjs/response-methods/ok.js +19 -19
- package/lib/cjs/response-methods/redirect.d.ts +12 -12
- package/lib/cjs/response-methods/redirect.js +19 -19
- package/lib/cjs/response-methods/serverError.d.ts +12 -12
- package/lib/cjs/response-methods/serverError.js +20 -20
- package/lib/cjs/response-methods/template.d.ts +15 -15
- package/lib/cjs/response-methods/template.js +36 -36
- package/lib/cjs/response-methods/unauthorized.d.ts +12 -12
- package/lib/cjs/response-methods/unauthorized.js +20 -20
- package/lib/cjs/response-methods/validationError.d.ts +12 -12
- package/lib/cjs/response-methods/validationError.js +20 -20
- package/lib/cjs/responses.d.ts +34 -34
- package/lib/cjs/responses.js +173 -173
- package/lib/cjs/route-args/ArgAsRequest.d.ts +11 -11
- package/lib/cjs/route-args/ArgAsRequest.js +24 -24
- package/lib/cjs/route-args/ArgAsRequest.js.map +1 -1
- package/lib/cjs/route-args/ArgAsResponse.d.ts +10 -10
- package/lib/cjs/route-args/ArgAsResponse.js +24 -24
- package/lib/cjs/route-args/ArgAsResponse.js.map +1 -1
- package/lib/cjs/route-args/ArgHydrator.d.ts +4 -4
- package/lib/cjs/route-args/ArgHydrator.js +6 -6
- package/lib/cjs/route-args/FromBody.d.ts +10 -10
- package/lib/cjs/route-args/FromBody.js +26 -26
- package/lib/cjs/route-args/FromBody.js.map +1 -1
- package/lib/cjs/route-args/FromCookie.d.ts +13 -13
- package/lib/cjs/route-args/FromCookie.js +72 -72
- package/lib/cjs/route-args/FromCookie.js.map +1 -1
- package/lib/cjs/route-args/FromDi.d.ts +13 -13
- package/lib/cjs/route-args/FromDi.js +35 -35
- package/lib/cjs/route-args/FromDi.js.map +1 -1
- package/lib/cjs/route-args/FromForm.d.ts +66 -92
- package/lib/cjs/route-args/FromForm.d.ts.map +1 -1
- package/lib/cjs/route-args/FromForm.js +214 -291
- package/lib/cjs/route-args/FromForm.js.map +1 -1
- package/lib/cjs/route-args/FromHeaderArg.d.ts +10 -10
- package/lib/cjs/route-args/FromHeaderArg.js +25 -25
- package/lib/cjs/route-args/FromHeaderArg.js.map +1 -1
- package/lib/cjs/route-args/FromParams.d.ts +10 -10
- package/lib/cjs/route-args/FromParams.js +27 -27
- package/lib/cjs/route-args/FromParams.js.map +1 -1
- package/lib/cjs/route-args/FromQuery.d.ts +10 -10
- package/lib/cjs/route-args/FromQuery.js +27 -27
- package/lib/cjs/route-args/FromQuery.js.map +1 -1
- package/lib/cjs/route-args/RequestFields.d.ts +40 -40
- package/lib/cjs/route-args/RequestFields.js +110 -110
- package/lib/cjs/route-args/RequestFields.js.map +1 -1
- package/lib/cjs/route-args/RouteArgs.d.ts +22 -22
- package/lib/cjs/route-args/RouteArgs.js +114 -114
- package/lib/cjs/route-args/RouteArgs.js.map +1 -1
- package/lib/cjs/route-args/index.d.ts +12 -12
- package/lib/cjs/route-args/index.js +28 -28
- package/lib/cjs/schemas/RouteArgsSchemas.d.ts +36 -36
- package/lib/cjs/schemas/RouteArgsSchemas.js +26 -26
- package/lib/cjs/server.d.ts +50 -50
- package/lib/cjs/server.js +272 -272
- package/lib/cjs/server.js.map +1 -1
- package/lib/cjs/transformers/PureTransformer.d.ts +9 -9
- package/lib/cjs/transformers/PureTransformer.js +27 -27
- package/lib/cjs/transformers/PureTransformer.js.map +1 -1
- package/lib/cjs/transformers/index.d.ts +1 -1
- package/lib/cjs/transformers/index.js +17 -17
- package/lib/cjs/uploaders/ImmediateFileUploader.d.ts +19 -0
- package/lib/cjs/uploaders/ImmediateFileUploader.d.ts.map +1 -0
- package/lib/cjs/uploaders/ImmediateFileUploader.js +69 -0
- package/lib/cjs/uploaders/ImmediateFileUploader.js.map +1 -0
- package/lib/mjs/bootstrap.d.ts +4 -4
- package/lib/mjs/bootstrap.js +26 -26
- package/lib/mjs/bootstrap.js.map +1 -1
- package/lib/mjs/config/http.d.ts +58 -58
- package/lib/mjs/config/http.js +81 -81
- package/lib/mjs/controllers.d.ts +48 -48
- package/lib/mjs/controllers.d.ts.map +1 -1
- package/lib/mjs/controllers.js +276 -281
- package/lib/mjs/controllers.js.map +1 -1
- package/lib/mjs/decorators.d.ts +183 -183
- package/lib/mjs/decorators.js +404 -404
- package/lib/mjs/exceptions.d.ts +1 -1
- package/lib/mjs/exceptions.js +1 -1
- package/lib/mjs/hydrators/DateTimeHydrator.d.ts +5 -5
- package/lib/mjs/hydrators/DateTimeHydrator.js +30 -30
- package/lib/mjs/hydrators/DateTimeHydrator.js.map +1 -1
- package/lib/mjs/index.d.ts +9 -9
- package/lib/mjs/index.js +9 -9
- package/lib/mjs/interfaces.d.ts +569 -550
- package/lib/mjs/interfaces.d.ts.map +1 -1
- package/lib/mjs/interfaces.js +257 -251
- package/lib/mjs/interfaces.js.map +1 -1
- package/lib/mjs/middlewares/RealIp.d.ts +8 -8
- package/lib/mjs/middlewares/RealIp.js +31 -31
- package/lib/mjs/middlewares/RealIp.js.map +1 -1
- package/lib/mjs/middlewares/RequestId.d.ts +8 -8
- package/lib/mjs/middlewares/RequestId.js +32 -32
- package/lib/mjs/middlewares/RequestId.js.map +1 -1
- package/lib/mjs/middlewares/ResponseTime.d.ts +10 -10
- package/lib/mjs/middlewares/ResponseTime.js +38 -38
- package/lib/mjs/middlewares/ResponseTime.js.map +1 -1
- package/lib/mjs/response-methods/badRequest.d.ts +12 -12
- package/lib/mjs/response-methods/badRequest.js +16 -16
- package/lib/mjs/response-methods/conflict.d.ts +12 -12
- package/lib/mjs/response-methods/conflict.js +16 -16
- package/lib/mjs/response-methods/cookieResponse.d.ts +19 -19
- package/lib/mjs/response-methods/cookieResponse.js +46 -46
- package/lib/mjs/response-methods/created.d.ts +12 -12
- package/lib/mjs/response-methods/created.js +15 -15
- package/lib/mjs/response-methods/errorResponse.d.ts +7 -7
- package/lib/mjs/response-methods/errorResponse.js +17 -17
- package/lib/mjs/response-methods/file.d.ts +26 -26
- package/lib/mjs/response-methods/file.d.ts.map +1 -1
- package/lib/mjs/response-methods/file.js +103 -124
- package/lib/mjs/response-methods/file.js.map +1 -1
- package/lib/mjs/response-methods/forbidden.d.ts +12 -12
- package/lib/mjs/response-methods/forbidden.js +16 -16
- package/lib/mjs/response-methods/index.d.ts +13 -13
- package/lib/mjs/response-methods/index.js +13 -13
- package/lib/mjs/response-methods/noContent.d.ts +12 -12
- package/lib/mjs/response-methods/noContent.js +16 -16
- package/lib/mjs/response-methods/notAcceptable.d.ts +13 -13
- package/lib/mjs/response-methods/notAcceptable.js +17 -17
- package/lib/mjs/response-methods/notAllowed.d.ts +12 -12
- package/lib/mjs/response-methods/notAllowed.js +16 -16
- package/lib/mjs/response-methods/notFound.d.ts +12 -12
- package/lib/mjs/response-methods/notFound.js +16 -16
- package/lib/mjs/response-methods/ok.d.ts +12 -12
- package/lib/mjs/response-methods/ok.js +15 -15
- package/lib/mjs/response-methods/redirect.d.ts +12 -12
- package/lib/mjs/response-methods/redirect.js +15 -15
- package/lib/mjs/response-methods/serverError.d.ts +12 -12
- package/lib/mjs/response-methods/serverError.js +16 -16
- package/lib/mjs/response-methods/template.d.ts +15 -15
- package/lib/mjs/response-methods/template.js +29 -29
- package/lib/mjs/response-methods/unauthorized.d.ts +12 -12
- package/lib/mjs/response-methods/unauthorized.js +16 -16
- package/lib/mjs/response-methods/validationError.d.ts +12 -12
- package/lib/mjs/response-methods/validationError.js +16 -16
- package/lib/mjs/responses.d.ts +34 -34
- package/lib/mjs/responses.js +143 -143
- package/lib/mjs/route-args/ArgAsRequest.d.ts +11 -11
- package/lib/mjs/route-args/ArgAsRequest.js +21 -21
- package/lib/mjs/route-args/ArgAsRequest.js.map +1 -1
- package/lib/mjs/route-args/ArgAsResponse.d.ts +10 -10
- package/lib/mjs/route-args/ArgAsResponse.js +21 -21
- package/lib/mjs/route-args/ArgAsResponse.js.map +1 -1
- package/lib/mjs/route-args/ArgHydrator.d.ts +4 -4
- package/lib/mjs/route-args/ArgHydrator.js +2 -2
- package/lib/mjs/route-args/FromBody.d.ts +10 -10
- package/lib/mjs/route-args/FromBody.js +23 -23
- package/lib/mjs/route-args/FromBody.js.map +1 -1
- package/lib/mjs/route-args/FromCookie.d.ts +13 -13
- package/lib/mjs/route-args/FromCookie.js +46 -46
- package/lib/mjs/route-args/FromCookie.js.map +1 -1
- package/lib/mjs/route-args/FromDi.d.ts +13 -13
- package/lib/mjs/route-args/FromDi.js +32 -32
- package/lib/mjs/route-args/FromDi.js.map +1 -1
- package/lib/mjs/route-args/FromForm.d.ts +66 -92
- package/lib/mjs/route-args/FromForm.d.ts.map +1 -1
- package/lib/mjs/route-args/FromForm.js +210 -284
- package/lib/mjs/route-args/FromForm.js.map +1 -1
- package/lib/mjs/route-args/FromHeaderArg.d.ts +10 -10
- package/lib/mjs/route-args/FromHeaderArg.js +22 -22
- package/lib/mjs/route-args/FromHeaderArg.js.map +1 -1
- package/lib/mjs/route-args/FromParams.d.ts +10 -10
- package/lib/mjs/route-args/FromParams.js +24 -24
- package/lib/mjs/route-args/FromParams.js.map +1 -1
- package/lib/mjs/route-args/FromQuery.d.ts +10 -10
- package/lib/mjs/route-args/FromQuery.js +24 -24
- package/lib/mjs/route-args/FromQuery.js.map +1 -1
- package/lib/mjs/route-args/RequestFields.d.ts +40 -40
- package/lib/mjs/route-args/RequestFields.js +107 -107
- package/lib/mjs/route-args/RequestFields.js.map +1 -1
- package/lib/mjs/route-args/RouteArgs.d.ts +22 -22
- package/lib/mjs/route-args/RouteArgs.js +107 -107
- package/lib/mjs/route-args/RouteArgs.js.map +1 -1
- package/lib/mjs/route-args/index.d.ts +12 -12
- package/lib/mjs/route-args/index.js +12 -12
- package/lib/mjs/schemas/RouteArgsSchemas.d.ts +36 -36
- package/lib/mjs/schemas/RouteArgsSchemas.js +23 -23
- package/lib/mjs/server.d.ts +50 -50
- package/lib/mjs/server.js +266 -266
- package/lib/mjs/server.js.map +1 -1
- package/lib/mjs/transformers/PureTransformer.d.ts +9 -9
- package/lib/mjs/transformers/PureTransformer.js +24 -24
- package/lib/mjs/transformers/PureTransformer.js.map +1 -1
- package/lib/mjs/transformers/index.d.ts +1 -1
- package/lib/mjs/transformers/index.js +1 -1
- package/lib/mjs/uploaders/ImmediateFileUploader.d.ts +19 -0
- package/lib/mjs/uploaders/ImmediateFileUploader.d.ts.map +1 -0
- package/lib/mjs/uploaders/ImmediateFileUploader.js +66 -0
- package/lib/mjs/uploaders/ImmediateFileUploader.js.map +1 -0
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +17 -17
package/lib/mjs/responses.js
CHANGED
|
@@ -1,144 +1,144 @@
|
|
|
1
|
-
import { HTTP_STATUS_CODE, HttpAcceptHeaders, DataTransformer } from './interfaces.js';
|
|
2
|
-
import { Configuration } from '@spinajs/configuration';
|
|
3
|
-
import { DI } from '@spinajs/di';
|
|
4
|
-
import { Log } from '@spinajs/log-common';
|
|
5
|
-
import * as randomstring from 'randomstring';
|
|
6
|
-
import { Templates } from '@spinajs/templates';
|
|
7
|
-
import { ServerError } from './index.js';
|
|
8
|
-
/**
|
|
9
|
-
* Sends data & sets proper header as json
|
|
10
|
-
*
|
|
11
|
-
* @param model - data to send
|
|
12
|
-
* @param status - status code
|
|
13
|
-
*/
|
|
14
|
-
export function jsonResponse(model, status) {
|
|
15
|
-
return (_req, res) => {
|
|
16
|
-
res.status(status ? status : HTTP_STATUS_CODE.OK);
|
|
17
|
-
if (model) {
|
|
18
|
-
res.json(model);
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
res.json();
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Sends data & sets proper header as json
|
|
27
|
-
*
|
|
28
|
-
* @param model - data to send
|
|
29
|
-
* @param status - status code
|
|
30
|
-
*/
|
|
31
|
-
export function textResponse(model, status) {
|
|
32
|
-
return (_req, res) => {
|
|
33
|
-
res.status(status ? status : HTTP_STATUS_CODE.OK);
|
|
34
|
-
if (model) {
|
|
35
|
-
res.set('Content-Type', 'text/plain');
|
|
36
|
-
res.send(JSON.stringify(model));
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Sends html response & sets proper header. If template is not avaible, handles proper error rendering.
|
|
42
|
-
*
|
|
43
|
-
* @param file - template file path
|
|
44
|
-
* @param model - data passed to template
|
|
45
|
-
* @param status - optional status code
|
|
46
|
-
*/
|
|
47
|
-
export function htmlResponse(file, model, status) {
|
|
48
|
-
const cfg = DI.get(Configuration);
|
|
49
|
-
return (req, res) => {
|
|
50
|
-
if (!req.accepts('html')) {
|
|
51
|
-
const f = DI.resolve('__file_provider__', ['__fs_http_response_templates__']);
|
|
52
|
-
f.download('serverError.pug').then((file) => {
|
|
53
|
-
httpResponse({
|
|
54
|
-
error: {
|
|
55
|
-
message: 'invalid request content type',
|
|
56
|
-
code: 400,
|
|
57
|
-
},
|
|
58
|
-
}, HTTP_STATUS_CODE.BAD_REQUEST, file)(req, res);
|
|
59
|
-
});
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
res.set('Content-Type', 'text/html');
|
|
63
|
-
_render(file, model, status).catch((err) => {
|
|
64
|
-
const log = DI.resolve(Log, ['http']);
|
|
65
|
-
log.warn(`Cannot render html file ${file}, error: ${err.message}:${err.stack}`, err);
|
|
66
|
-
const fs = DI.resolve('__file_provider__', ['__fs_http_response_templates__']);
|
|
67
|
-
fs.download('serverError.pug').then((file) => {
|
|
68
|
-
// try to render server error response
|
|
69
|
-
_render(file, { error: err }, HTTP_STATUS_CODE.INTERNAL_ERROR).catch((err2) => {
|
|
70
|
-
const log = DI.resolve(Log, ['http']);
|
|
71
|
-
// final fallback rendering error fails, we render embedded html error page
|
|
72
|
-
const ticketNo = randomstring.generate(7);
|
|
73
|
-
log.warn(`Cannot render pug file error: ${err2.message}, ticket: ${ticketNo}`, err);
|
|
74
|
-
res.status(HTTP_STATUS_CODE.INTERNAL_ERROR);
|
|
75
|
-
res.send(cfg.get('http.FatalTemplate').replace('{ticket}', ticketNo));
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
function _render(f, m, c) {
|
|
80
|
-
const templateEngine = DI.get(Templates);
|
|
81
|
-
return templateEngine.render(f, m).then((content) => {
|
|
82
|
-
res.status(c ? c : HTTP_STATUS_CODE.OK);
|
|
83
|
-
res.send(content);
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Default response handling. Checks `Accept` header & matches proper response
|
|
90
|
-
* For now its supports html & json responses
|
|
91
|
-
*
|
|
92
|
-
* @param model - data to send
|
|
93
|
-
* @param code - status code
|
|
94
|
-
* @param template - template to render without extension eg. `views/responses/ok`. It will try to match .pug, .xml or whatever to match response
|
|
95
|
-
* to `Accept` header
|
|
96
|
-
*/
|
|
97
|
-
export function httpResponse(model, code, template) {
|
|
98
|
-
const cfg = DI.get(Configuration);
|
|
99
|
-
const acceptedHeaders = cfg.get('http.AcceptHeaders');
|
|
100
|
-
const transformers = DI.resolve(Array.ofType(DataTransformer));
|
|
101
|
-
return (req, res) => {
|
|
102
|
-
if (req.accepts('html') && (acceptedHeaders & HttpAcceptHeaders.HTML) === HttpAcceptHeaders.HTML) {
|
|
103
|
-
const fs = DI.resolve('__file_provider__', ['__fs_http_response_templates__']);
|
|
104
|
-
if (!fs) {
|
|
105
|
-
throw new ServerError('file provider __fs_http_response_templates__ not set. Pleas set response template file provider for html http default responses !');
|
|
106
|
-
}
|
|
107
|
-
fs.download(template)
|
|
108
|
-
.then((file) => {
|
|
109
|
-
htmlResponse(file, model, code)(req, res);
|
|
110
|
-
})
|
|
111
|
-
.catch((err) => {
|
|
112
|
-
const log = DI.resolve(Log, ['http']);
|
|
113
|
-
log.warn(`Cannot render html file ${template}, error: ${err.message}:${err.stack}`, err);
|
|
114
|
-
fs.download('serverError.pug').then((file) => {
|
|
115
|
-
// try to render server error response
|
|
116
|
-
htmlResponse(file, { error: err }, HTTP_STATUS_CODE.INTERNAL_ERROR)(req, res);
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
else if (req.accepts('json') && (acceptedHeaders & HttpAcceptHeaders.JSON) === HttpAcceptHeaders.JSON) {
|
|
121
|
-
if (req.headers['x-data-transform']) {
|
|
122
|
-
const transformer = transformers.find((t) => t.Type === req.headers['x-data-transform']);
|
|
123
|
-
if (transformer) {
|
|
124
|
-
jsonResponse(transformer.transform(model, req), code)(req, res);
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
jsonResponse({
|
|
128
|
-
error: {
|
|
129
|
-
message: "invalid data transformer, remove header 'x-data-transform' to return raw data or set proper data transformer",
|
|
130
|
-
code: 400,
|
|
131
|
-
},
|
|
132
|
-
}, HTTP_STATUS_CODE.BAD_REQUEST)(req, res);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
jsonResponse(model, code)(req, res);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
textResponse(model, code)(req, res);
|
|
141
|
-
}
|
|
142
|
-
};
|
|
143
|
-
}
|
|
1
|
+
import { HTTP_STATUS_CODE, HttpAcceptHeaders, DataTransformer } from './interfaces.js';
|
|
2
|
+
import { Configuration } from '@spinajs/configuration';
|
|
3
|
+
import { DI } from '@spinajs/di';
|
|
4
|
+
import { Log } from '@spinajs/log-common';
|
|
5
|
+
import * as randomstring from 'randomstring';
|
|
6
|
+
import { Templates } from '@spinajs/templates';
|
|
7
|
+
import { ServerError } from './index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Sends data & sets proper header as json
|
|
10
|
+
*
|
|
11
|
+
* @param model - data to send
|
|
12
|
+
* @param status - status code
|
|
13
|
+
*/
|
|
14
|
+
export function jsonResponse(model, status) {
|
|
15
|
+
return (_req, res) => {
|
|
16
|
+
res.status(status ? status : HTTP_STATUS_CODE.OK);
|
|
17
|
+
if (model) {
|
|
18
|
+
res.json(model);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
res.json();
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Sends data & sets proper header as json
|
|
27
|
+
*
|
|
28
|
+
* @param model - data to send
|
|
29
|
+
* @param status - status code
|
|
30
|
+
*/
|
|
31
|
+
export function textResponse(model, status) {
|
|
32
|
+
return (_req, res) => {
|
|
33
|
+
res.status(status ? status : HTTP_STATUS_CODE.OK);
|
|
34
|
+
if (model) {
|
|
35
|
+
res.set('Content-Type', 'text/plain');
|
|
36
|
+
res.send(JSON.stringify(model));
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Sends html response & sets proper header. If template is not avaible, handles proper error rendering.
|
|
42
|
+
*
|
|
43
|
+
* @param file - template file path
|
|
44
|
+
* @param model - data passed to template
|
|
45
|
+
* @param status - optional status code
|
|
46
|
+
*/
|
|
47
|
+
export function htmlResponse(file, model, status) {
|
|
48
|
+
const cfg = DI.get(Configuration);
|
|
49
|
+
return (req, res) => {
|
|
50
|
+
if (!req.accepts('html')) {
|
|
51
|
+
const f = DI.resolve('__file_provider__', ['__fs_http_response_templates__']);
|
|
52
|
+
f.download('serverError.pug').then((file) => {
|
|
53
|
+
httpResponse({
|
|
54
|
+
error: {
|
|
55
|
+
message: 'invalid request content type',
|
|
56
|
+
code: 400,
|
|
57
|
+
},
|
|
58
|
+
}, HTTP_STATUS_CODE.BAD_REQUEST, file)(req, res);
|
|
59
|
+
});
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
res.set('Content-Type', 'text/html');
|
|
63
|
+
_render(file, model, status).catch((err) => {
|
|
64
|
+
const log = DI.resolve(Log, ['http']);
|
|
65
|
+
log.warn(`Cannot render html file ${file}, error: ${err.message}:${err.stack}`, err);
|
|
66
|
+
const fs = DI.resolve('__file_provider__', ['__fs_http_response_templates__']);
|
|
67
|
+
fs.download('serverError.pug').then((file) => {
|
|
68
|
+
// try to render server error response
|
|
69
|
+
_render(file, { error: err }, HTTP_STATUS_CODE.INTERNAL_ERROR).catch((err2) => {
|
|
70
|
+
const log = DI.resolve(Log, ['http']);
|
|
71
|
+
// final fallback rendering error fails, we render embedded html error page
|
|
72
|
+
const ticketNo = randomstring.generate(7);
|
|
73
|
+
log.warn(`Cannot render pug file error: ${err2.message}, ticket: ${ticketNo}`, err);
|
|
74
|
+
res.status(HTTP_STATUS_CODE.INTERNAL_ERROR);
|
|
75
|
+
res.send(cfg.get('http.FatalTemplate').replace('{ticket}', ticketNo));
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
function _render(f, m, c) {
|
|
80
|
+
const templateEngine = DI.get(Templates);
|
|
81
|
+
return templateEngine.render(f, m).then((content) => {
|
|
82
|
+
res.status(c ? c : HTTP_STATUS_CODE.OK);
|
|
83
|
+
res.send(content);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Default response handling. Checks `Accept` header & matches proper response
|
|
90
|
+
* For now its supports html & json responses
|
|
91
|
+
*
|
|
92
|
+
* @param model - data to send
|
|
93
|
+
* @param code - status code
|
|
94
|
+
* @param template - template to render without extension eg. `views/responses/ok`. It will try to match .pug, .xml or whatever to match response
|
|
95
|
+
* to `Accept` header
|
|
96
|
+
*/
|
|
97
|
+
export function httpResponse(model, code, template) {
|
|
98
|
+
const cfg = DI.get(Configuration);
|
|
99
|
+
const acceptedHeaders = cfg.get('http.AcceptHeaders');
|
|
100
|
+
const transformers = DI.resolve(Array.ofType(DataTransformer));
|
|
101
|
+
return (req, res) => {
|
|
102
|
+
if (req.accepts('html') && (acceptedHeaders & HttpAcceptHeaders.HTML) === HttpAcceptHeaders.HTML) {
|
|
103
|
+
const fs = DI.resolve('__file_provider__', ['__fs_http_response_templates__']);
|
|
104
|
+
if (!fs) {
|
|
105
|
+
throw new ServerError('file provider __fs_http_response_templates__ not set. Pleas set response template file provider for html http default responses !');
|
|
106
|
+
}
|
|
107
|
+
fs.download(template)
|
|
108
|
+
.then((file) => {
|
|
109
|
+
htmlResponse(file, model, code)(req, res);
|
|
110
|
+
})
|
|
111
|
+
.catch((err) => {
|
|
112
|
+
const log = DI.resolve(Log, ['http']);
|
|
113
|
+
log.warn(`Cannot render html file ${template}, error: ${err.message}:${err.stack}`, err);
|
|
114
|
+
fs.download('serverError.pug').then((file) => {
|
|
115
|
+
// try to render server error response
|
|
116
|
+
htmlResponse(file, { error: err }, HTTP_STATUS_CODE.INTERNAL_ERROR)(req, res);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
else if (req.accepts('json') && (acceptedHeaders & HttpAcceptHeaders.JSON) === HttpAcceptHeaders.JSON) {
|
|
121
|
+
if (req.headers['x-data-transform']) {
|
|
122
|
+
const transformer = transformers.find((t) => t.Type === req.headers['x-data-transform']);
|
|
123
|
+
if (transformer) {
|
|
124
|
+
jsonResponse(transformer.transform(model, req), code)(req, res);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
jsonResponse({
|
|
128
|
+
error: {
|
|
129
|
+
message: "invalid data transformer, remove header 'x-data-transform' to return raw data or set proper data transformer",
|
|
130
|
+
code: 400,
|
|
131
|
+
},
|
|
132
|
+
}, HTTP_STATUS_CODE.BAD_REQUEST)(req, res);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
jsonResponse(model, code)(req, res);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
textResponse(model, code)(req, res);
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
144
|
//# sourceMappingURL=responses.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
/// <reference types="qs" />
|
|
2
|
-
import { RouteArgs } from './RouteArgs.js';
|
|
3
|
-
import { IRouteParameter, ParameterType, IRouteCall } from '../interfaces.js';
|
|
4
|
-
import * as express from 'express';
|
|
5
|
-
export declare class ArgAsRequest extends RouteArgs {
|
|
6
|
-
get SupportedType(): ParameterType;
|
|
7
|
-
extract(callData: IRouteCall, _param: IRouteParameter, req: express.Request): Promise<{
|
|
8
|
-
CallData: IRouteCall;
|
|
9
|
-
Args: express.Request<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
10
|
-
}>;
|
|
11
|
-
}
|
|
1
|
+
/// <reference types="qs" />
|
|
2
|
+
import { RouteArgs } from './RouteArgs.js';
|
|
3
|
+
import { IRouteParameter, ParameterType, IRouteCall } from '../interfaces.js';
|
|
4
|
+
import * as express from 'express';
|
|
5
|
+
export declare class ArgAsRequest extends RouteArgs {
|
|
6
|
+
get SupportedType(): ParameterType;
|
|
7
|
+
extract(callData: IRouteCall, _param: IRouteParameter, req: express.Request): Promise<{
|
|
8
|
+
CallData: IRouteCall;
|
|
9
|
+
Args: express.Request<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
12
|
//# sourceMappingURL=ArgAsRequest.d.ts.map
|
|
@@ -1,22 +1,22 @@
|
|
|
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
|
-
let ArgAsRequest = class ArgAsRequest extends RouteArgs {
|
|
11
|
-
get SupportedType() {
|
|
12
|
-
return ParameterType.Req;
|
|
13
|
-
}
|
|
14
|
-
async extract(callData, _param, req) {
|
|
15
|
-
return { CallData: callData, Args: req };
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
ArgAsRequest = __decorate([
|
|
19
|
-
Injectable()
|
|
20
|
-
], ArgAsRequest);
|
|
21
|
-
export { ArgAsRequest };
|
|
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
|
+
let ArgAsRequest = class ArgAsRequest extends RouteArgs {
|
|
11
|
+
get SupportedType() {
|
|
12
|
+
return ParameterType.Req;
|
|
13
|
+
}
|
|
14
|
+
async extract(callData, _param, req) {
|
|
15
|
+
return { CallData: callData, Args: req };
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
ArgAsRequest = __decorate([
|
|
19
|
+
Injectable()
|
|
20
|
+
], ArgAsRequest);
|
|
21
|
+
export { ArgAsRequest };
|
|
22
22
|
//# sourceMappingURL=ArgAsRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArgAsRequest.js","sourceRoot":"","sources":["../../../src/route-args/ArgAsRequest.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAmB,aAAa,EAAc,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIlC,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,SAAS;IACzC,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,GAAG,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,MAAuB,EAAE,GAAoB;QACtF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC3C,CAAC;CACF,CAAA;AARY,YAAY;IADxB,UAAU,EAAE;GACA,YAAY,CAQxB
|
|
1
|
+
{"version":3,"file":"ArgAsRequest.js","sourceRoot":"","sources":["../../../src/route-args/ArgAsRequest.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAmB,aAAa,EAAc,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIlC,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,SAAS;IACzC,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,GAAG,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,MAAuB,EAAE,GAAoB;QACtF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC3C,CAAC;CACF,CAAA;AARY,YAAY;IADxB,UAAU,EAAE;GACA,YAAY,CAQxB"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { RouteArgs } from './RouteArgs.js';
|
|
2
|
-
import { IRouteParameter, ParameterType, IRouteCall } from '../interfaces.js';
|
|
3
|
-
import * as express from 'express';
|
|
4
|
-
export declare class ArgAsResponse extends RouteArgs {
|
|
5
|
-
get SupportedType(): ParameterType;
|
|
6
|
-
extract(callData: IRouteCall, _param: IRouteParameter, _req: express.Request, res: express.Response): Promise<{
|
|
7
|
-
CallData: IRouteCall;
|
|
8
|
-
Args: express.Response<any, Record<string, any>>;
|
|
9
|
-
}>;
|
|
10
|
-
}
|
|
1
|
+
import { RouteArgs } from './RouteArgs.js';
|
|
2
|
+
import { IRouteParameter, ParameterType, IRouteCall } from '../interfaces.js';
|
|
3
|
+
import * as express from 'express';
|
|
4
|
+
export declare class ArgAsResponse extends RouteArgs {
|
|
5
|
+
get SupportedType(): ParameterType;
|
|
6
|
+
extract(callData: IRouteCall, _param: IRouteParameter, _req: express.Request, res: express.Response): Promise<{
|
|
7
|
+
CallData: IRouteCall;
|
|
8
|
+
Args: express.Response<any, Record<string, any>>;
|
|
9
|
+
}>;
|
|
10
|
+
}
|
|
11
11
|
//# sourceMappingURL=ArgAsResponse.d.ts.map
|
|
@@ -1,22 +1,22 @@
|
|
|
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
|
-
let ArgAsResponse = class ArgAsResponse extends RouteArgs {
|
|
11
|
-
get SupportedType() {
|
|
12
|
-
return ParameterType.Res;
|
|
13
|
-
}
|
|
14
|
-
async extract(callData, _param, _req, res) {
|
|
15
|
-
return { CallData: callData, Args: res };
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
ArgAsResponse = __decorate([
|
|
19
|
-
Injectable()
|
|
20
|
-
], ArgAsResponse);
|
|
21
|
-
export { ArgAsResponse };
|
|
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
|
+
let ArgAsResponse = class ArgAsResponse extends RouteArgs {
|
|
11
|
+
get SupportedType() {
|
|
12
|
+
return ParameterType.Res;
|
|
13
|
+
}
|
|
14
|
+
async extract(callData, _param, _req, res) {
|
|
15
|
+
return { CallData: callData, Args: res };
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
ArgAsResponse = __decorate([
|
|
19
|
+
Injectable()
|
|
20
|
+
], ArgAsResponse);
|
|
21
|
+
export { ArgAsResponse };
|
|
22
22
|
//# sourceMappingURL=ArgAsResponse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArgAsResponse.js","sourceRoot":"","sources":["../../../src/route-args/ArgAsResponse.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAmB,aAAa,EAAc,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGlC,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,SAAS;IAC1C,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,GAAG,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,MAAuB,EAAE,IAAqB,EAAE,GAAqB;QAC9G,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC3C,CAAC;CACF,CAAA;AARY,aAAa;IADzB,UAAU,EAAE;GACA,aAAa,CAQzB
|
|
1
|
+
{"version":3,"file":"ArgAsResponse.js","sourceRoot":"","sources":["../../../src/route-args/ArgAsResponse.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAmB,aAAa,EAAc,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGlC,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,SAAS;IAC1C,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,GAAG,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,MAAuB,EAAE,IAAqB,EAAE,GAAqB;QAC9G,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC3C,CAAC;CACF,CAAA;AARY,aAAa;IADzB,UAAU,EAAE;GACA,aAAa,CAQzB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IRouteParameter } from '../interfaces.js';
|
|
2
|
-
export declare abstract class ArgHydrator {
|
|
3
|
-
abstract hydrate(input: any, parameter: IRouteParameter): Promise<any>;
|
|
4
|
-
}
|
|
1
|
+
import { IRouteParameter } from '../interfaces.js';
|
|
2
|
+
export declare abstract class ArgHydrator {
|
|
3
|
+
abstract hydrate(input: any, parameter: IRouteParameter): Promise<any>;
|
|
4
|
+
}
|
|
5
5
|
//# sourceMappingURL=ArgHydrator.d.ts.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export class ArgHydrator {
|
|
2
|
-
}
|
|
1
|
+
export class ArgHydrator {
|
|
2
|
+
}
|
|
3
3
|
//# sourceMappingURL=ArgHydrator.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { RouteArgs } from './RouteArgs.js';
|
|
2
|
-
import { IRouteParameter, ParameterType, IRouteCall, IRoute } from '../interfaces.js';
|
|
3
|
-
import * as express from 'express';
|
|
4
|
-
export declare class FromBody extends RouteArgs {
|
|
5
|
-
get SupportedType(): ParameterType;
|
|
6
|
-
extract(callData: IRouteCall, param: IRouteParameter, req: express.Request, _res: express.Response, route: IRoute): Promise<{
|
|
7
|
-
CallData: IRouteCall;
|
|
8
|
-
Args: any;
|
|
9
|
-
}>;
|
|
10
|
-
}
|
|
1
|
+
import { RouteArgs } from './RouteArgs.js';
|
|
2
|
+
import { IRouteParameter, ParameterType, IRouteCall, IRoute } from '../interfaces.js';
|
|
3
|
+
import * as express from 'express';
|
|
4
|
+
export declare class FromBody extends RouteArgs {
|
|
5
|
+
get SupportedType(): ParameterType;
|
|
6
|
+
extract(callData: IRouteCall, param: IRouteParameter, req: express.Request, _res: express.Response, route: IRoute): Promise<{
|
|
7
|
+
CallData: IRouteCall;
|
|
8
|
+
Args: any;
|
|
9
|
+
}>;
|
|
10
|
+
}
|
|
11
11
|
//# sourceMappingURL=FromBody.d.ts.map
|
|
@@ -1,24 +1,24 @@
|
|
|
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
|
-
let FromBody = class FromBody extends RouteArgs {
|
|
11
|
-
get SupportedType() {
|
|
12
|
-
return ParameterType.FromBody;
|
|
13
|
-
}
|
|
14
|
-
async extract(callData, param, req, _res, route) {
|
|
15
|
-
const arg = req.body[param.Name] ? req.body[param.Name] : [...route.Parameters.values()].filter((p) => p.Type === ParameterType.FromBody).length === 1 ? req.body : null;
|
|
16
|
-
let result = await this.tryHydrateParam(arg, param, route);
|
|
17
|
-
return { CallData: callData, Args: result };
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
FromBody = __decorate([
|
|
21
|
-
Injectable()
|
|
22
|
-
], FromBody);
|
|
23
|
-
export { FromBody };
|
|
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
|
+
let FromBody = class FromBody extends RouteArgs {
|
|
11
|
+
get SupportedType() {
|
|
12
|
+
return ParameterType.FromBody;
|
|
13
|
+
}
|
|
14
|
+
async extract(callData, param, req, _res, route) {
|
|
15
|
+
const arg = req.body[param.Name] ? req.body[param.Name] : [...route.Parameters.values()].filter((p) => p.Type === ParameterType.FromBody).length === 1 ? req.body : null;
|
|
16
|
+
let result = await this.tryHydrateParam(arg, param, route);
|
|
17
|
+
return { CallData: callData, Args: result };
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
FromBody = __decorate([
|
|
21
|
+
Injectable()
|
|
22
|
+
], FromBody);
|
|
23
|
+
export { FromBody };
|
|
24
24
|
//# sourceMappingURL=FromBody.js.map
|
|
@@ -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,EAAE,KAAsB,EAAE,GAAoB,EAAE,IAAsB,EAAE,KAAa;QAC5H,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,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,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACzK,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;AAVY,QAAQ;IADpB,UAAU,EAAE;GACA,QAAQ,CAUpB
|
|
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,EAAE,KAAsB,EAAE,GAAoB,EAAE,IAAsB,EAAE,KAAa;QAC5H,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,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,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACzK,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;AAVY,QAAQ;IADpB,UAAU,EAAE;GACA,QAAQ,CAUpB"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { RouteArgs } from './RouteArgs.js';
|
|
2
|
-
import { IRouteParameter, ParameterType, IRouteCall, IRoute } from '../interfaces.js';
|
|
3
|
-
import * as express from 'express';
|
|
4
|
-
import { Configuration } from '@spinajs/configuration';
|
|
5
|
-
export declare class FromCookie extends RouteArgs {
|
|
6
|
-
protected _coockieSecret: string;
|
|
7
|
-
constructor(cfg: Configuration);
|
|
8
|
-
get SupportedType(): ParameterType;
|
|
9
|
-
extract(callData: IRouteCall, param: IRouteParameter, req: express.Request, _res: express.Response, route: IRoute): Promise<{
|
|
10
|
-
CallData: IRouteCall;
|
|
11
|
-
Args: any;
|
|
12
|
-
}>;
|
|
13
|
-
}
|
|
1
|
+
import { RouteArgs } from './RouteArgs.js';
|
|
2
|
+
import { IRouteParameter, ParameterType, IRouteCall, IRoute } from '../interfaces.js';
|
|
3
|
+
import * as express from 'express';
|
|
4
|
+
import { Configuration } from '@spinajs/configuration';
|
|
5
|
+
export declare class FromCookie extends RouteArgs {
|
|
6
|
+
protected _coockieSecret: string;
|
|
7
|
+
constructor(cfg: Configuration);
|
|
8
|
+
get SupportedType(): ParameterType;
|
|
9
|
+
extract(callData: IRouteCall, param: IRouteParameter, req: express.Request, _res: express.Response, route: IRoute): Promise<{
|
|
10
|
+
CallData: IRouteCall;
|
|
11
|
+
Args: any;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
14
14
|
//# sourceMappingURL=FromCookie.d.ts.map
|