@spinajs/http 1.2.119 → 1.2.137
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/controllers.d.ts +5 -1
- package/lib/controllers.js +31 -20
- package/lib/controllers.js.map +1 -1
- package/lib/decorators.d.ts +11 -11
- package/lib/decorators.js +36 -29
- package/lib/decorators.js.map +1 -1
- package/lib/interfaces.d.ts +21 -4
- package/lib/interfaces.js +7 -3
- package/lib/interfaces.js.map +1 -1
- package/lib/middlewares/RequestId.d.ts +10 -0
- package/lib/middlewares/RequestId.js +36 -0
- package/lib/middlewares/RequestId.js.map +1 -0
- package/lib/middlewares/ResponseTime.d.ts +10 -0
- package/lib/middlewares/ResponseTime.js +40 -0
- package/lib/middlewares/ResponseTime.js.map +1 -0
- package/lib/response-methods/badRequest.d.ts +0 -1
- package/lib/response-methods/conflict.d.ts +0 -1
- package/lib/response-methods/cookieResponse.d.ts +0 -1
- package/lib/response-methods/created.d.ts +0 -1
- package/lib/response-methods/forbidden.d.ts +0 -1
- package/lib/response-methods/noContent.d.ts +0 -1
- package/lib/response-methods/notFound.d.ts +0 -1
- package/lib/response-methods/ok.d.ts +0 -1
- package/lib/response-methods/pug.d.ts +0 -1
- package/lib/response-methods/serverError.d.ts +0 -1
- package/lib/response-methods/unauthorized.d.ts +0 -1
- package/lib/route-args/ArgAsRequest.d.ts +0 -1
- package/lib/route-args/FromBody.js +1 -18
- package/lib/route-args/FromBody.js.map +1 -1
- package/lib/route-args/FromCookie.d.ts +2 -2
- package/lib/route-args/FromCookie.js +2 -2
- package/lib/route-args/FromCookie.js.map +1 -1
- package/lib/route-args/FromHeaderArg.d.ts +2 -2
- package/lib/route-args/FromHeaderArg.js +2 -2
- package/lib/route-args/FromHeaderArg.js.map +1 -1
- package/lib/route-args/FromParams.d.ts +2 -2
- package/lib/route-args/FromParams.js +2 -2
- package/lib/route-args/FromParams.js.map +1 -1
- package/lib/route-args/FromQuery.d.ts +2 -2
- package/lib/route-args/FromQuery.js +2 -2
- package/lib/route-args/FromQuery.js.map +1 -1
- package/lib/route-args/RouteArgs.d.ts +3 -1
- package/lib/route-args/RouteArgs.js +47 -10
- package/lib/route-args/RouteArgs.js.map +1 -1
- package/lib/schemas/RouteArgsSchemas.d.ts +24 -3
- package/lib/schemas/RouteArgsSchemas.js +11 -3
- package/lib/schemas/RouteArgsSchemas.js.map +1 -1
- package/lib/server.d.ts +2 -0
- package/lib/server.js +19 -0
- package/lib/server.js.map +1 -1
- package/package.json +9 -9
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ResponseTime = void 0;
|
|
13
|
+
const interfaces_1 = require("../interfaces");
|
|
14
|
+
const di_1 = require("@spinajs/di");
|
|
15
|
+
let ResponseTime = class ResponseTime extends interfaces_1.ServerMiddleware {
|
|
16
|
+
constructor() {
|
|
17
|
+
super();
|
|
18
|
+
this.Order = -1;
|
|
19
|
+
}
|
|
20
|
+
after() {
|
|
21
|
+
return (req, res, next) => {
|
|
22
|
+
const end = new Date();
|
|
23
|
+
const diff = end.getTime() - req.storage.responseStart.getTime();
|
|
24
|
+
res.header('x-response-time', diff.toString());
|
|
25
|
+
next();
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
before() {
|
|
29
|
+
return (req, _res, next) => {
|
|
30
|
+
req.storage.responseStart = new Date();
|
|
31
|
+
next();
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
ResponseTime = __decorate([
|
|
36
|
+
(0, di_1.Injectable)(interfaces_1.ServerMiddleware),
|
|
37
|
+
__metadata("design:paramtypes", [])
|
|
38
|
+
], ResponseTime);
|
|
39
|
+
exports.ResponseTime = ResponseTime;
|
|
40
|
+
//# sourceMappingURL=ResponseTime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResponseTime.js","sourceRoot":"","sources":["../../src/middlewares/ResponseTime.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,8CAAsE;AAEtE,oCAAyC;AAGzC,IAAa,YAAY,GAAzB,MAAa,YAAa,SAAQ,6BAAgB;IAChD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAClB,CAAC;IAEM,KAAK;QACV,OAAO,CAAC,GAAa,EAAE,GAAqB,EAAE,IAA0B,EAAE,EAAE;YAC1E,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YACjE,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/C,IAAI,EAAE,CAAC;QACT,CAAC,CAAC;IACJ,CAAC;IAEM,MAAM;QACX,OAAO,CAAC,GAAa,EAAE,IAAsB,EAAE,IAA0B,EAAE,EAAE;YAC3E,GAAG,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC;YACvC,IAAI,EAAE,CAAC;QACT,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AArBY,YAAY;IADxB,IAAA,eAAU,EAAC,6BAAgB,CAAC;;GAChB,YAAY,CAqBxB;AArBY,oCAAY"}
|
|
@@ -16,24 +16,7 @@ let FromBody = class FromBody extends RouteArgs_1.RouteArgs {
|
|
|
16
16
|
}
|
|
17
17
|
async extract(callData, param, req, _res, route) {
|
|
18
18
|
const arg = req.body[param.Name] ? req.body[param.Name] : route.Parameters.size === 1 ? req.body : null;
|
|
19
|
-
let result =
|
|
20
|
-
const [hydrated, hValue] = await this.tryHydrateObject(arg, param);
|
|
21
|
-
if (hydrated) {
|
|
22
|
-
result = hValue;
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
switch (param.RuntimeType.name) {
|
|
26
|
-
case 'String':
|
|
27
|
-
case 'Number':
|
|
28
|
-
case 'Boolean':
|
|
29
|
-
case 'Object':
|
|
30
|
-
result = arg;
|
|
31
|
-
break;
|
|
32
|
-
default:
|
|
33
|
-
result = param.RuntimeType.name === 'Array' ? arg : new param.RuntimeType(arg);
|
|
34
|
-
break;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
19
|
+
let result = await this.tryHydrateParam(arg, param, route);
|
|
37
20
|
return { CallData: callData, Args: result };
|
|
38
21
|
}
|
|
39
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FromBody.js","sourceRoot":"","sources":["../../src/route-args/FromBody.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,8CAAmF;AAEnF,oCAAyC;AAGzC,IAAa,QAAQ,GAArB,MAAa,QAAS,SAAQ,qBAAS;IACrC,IAAW,aAAa;QACtB,OAAO,0BAAa,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,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACxG,IAAI,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"FromBody.js","sourceRoot":"","sources":["../../src/route-args/FromBody.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,8CAAmF;AAEnF,oCAAyC;AAGzC,IAAa,QAAQ,GAArB,MAAa,QAAS,SAAQ,qBAAS;IACrC,IAAW,aAAa;QACtB,OAAO,0BAAa,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,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACxG,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,IAAA,eAAU,GAAE;GACA,QAAQ,CAUpB;AAVY,4BAAQ"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { RouteArgs } from './RouteArgs';
|
|
2
|
-
import { IRouteParameter, ParameterType, IRouteCall } from '../interfaces';
|
|
2
|
+
import { IRouteParameter, ParameterType, IRouteCall, IRoute } from '../interfaces';
|
|
3
3
|
import * as express from 'express';
|
|
4
4
|
import { Configuration } from '@spinajs/configuration';
|
|
5
5
|
export declare class FromCookie extends RouteArgs {
|
|
6
6
|
protected _coockieSecret: string;
|
|
7
7
|
constructor(cfg: Configuration);
|
|
8
8
|
get SupportedType(): ParameterType;
|
|
9
|
-
extract(callData: IRouteCall, param: IRouteParameter, req: express.Request): Promise<{
|
|
9
|
+
extract(callData: IRouteCall, param: IRouteParameter, req: express.Request, _res: express.Response, route: IRoute): Promise<{
|
|
10
10
|
CallData: IRouteCall;
|
|
11
11
|
Args: any;
|
|
12
12
|
}>;
|
|
@@ -46,7 +46,7 @@ let FromCookie = class FromCookie extends RouteArgs_1.RouteArgs {
|
|
|
46
46
|
get SupportedType() {
|
|
47
47
|
return interfaces_1.ParameterType.FromCookie;
|
|
48
48
|
}
|
|
49
|
-
async extract(callData, param, req) {
|
|
49
|
+
async extract(callData, param, req, _res, route) {
|
|
50
50
|
var _a;
|
|
51
51
|
const arg = req.cookies[param.Name];
|
|
52
52
|
if (arg !== null) {
|
|
@@ -60,7 +60,7 @@ let FromCookie = class FromCookie extends RouteArgs_1.RouteArgs {
|
|
|
60
60
|
else {
|
|
61
61
|
result = arg;
|
|
62
62
|
}
|
|
63
|
-
return { CallData: callData, Args: await this.tryHydrateParam(result, param) };
|
|
63
|
+
return { CallData: callData, Args: await this.tryHydrateParam(result, param, route) };
|
|
64
64
|
}
|
|
65
65
|
return { CallData: callData, Args: null };
|
|
66
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FromCookie.js","sourceRoot":"","sources":["../../src/route-args/FromCookie.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"FromCookie.js","sourceRoot":"","sources":["../../src/route-args/FromCookie.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAwC;AACxC,8CAAmF;AAEnF,oCAAiD;AACjD,0DAAuD;AACvD,qDAAuC;AAIvC,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,qBAAS;IAGvC,YAAY,GAAkB;QAC5B,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,CAAS,qBAAqB,CAAC,CAAC;IAC/D,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,0BAAa,CAAC,UAAU,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAsB,EAAE,GAAoB,EAAE,IAAsB,EAAE,KAAa;;QAC5H,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,GAAG,KAAK,IAAI,EAAE;YAChB,IAAI,MAAM,GAAG,IAAI,CAAC;YAClB,IAAI,MAAA,KAAK,CAAC,OAAO,0CAAE,MAAM,EAAE;gBACzB,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC7C,IAAI,MAAM,KAAK,KAAK,EAAE;oBACpB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;iBAC3C;aACF;iBAAM;gBACL,MAAM,GAAG,GAAG,CAAC;aACd;YAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;SACvF;QAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5C,CAAC;CACF,CAAA;AAhCY,UAAU;IAFtB,IAAA,WAAM,EAAC,6BAAa,CAAC;IACrB,IAAA,eAAU,GAAE;qCAIM,6BAAa;GAHnB,UAAU,CAgCtB;AAhCY,gCAAU"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { RouteArgs } from './RouteArgs';
|
|
2
|
-
import { IRouteParameter, ParameterType, IRouteCall } from '../interfaces';
|
|
2
|
+
import { IRouteParameter, ParameterType, IRouteCall, IRoute } from '../interfaces';
|
|
3
3
|
import * as express from 'express';
|
|
4
4
|
import { DateTime } from 'luxon';
|
|
5
5
|
export declare class FromHeader extends RouteArgs {
|
|
6
6
|
get SupportedType(): ParameterType;
|
|
7
|
-
extract(callData: IRouteCall, param: IRouteParameter, req: express.Request): Promise<{
|
|
7
|
+
extract(callData: IRouteCall, param: IRouteParameter, req: express.Request, _res: express.Response, route: IRoute): Promise<{
|
|
8
8
|
CallData: IRouteCall;
|
|
9
9
|
Args: any;
|
|
10
10
|
}>;
|
|
@@ -15,9 +15,9 @@ let FromHeader = class FromHeader extends RouteArgs_1.RouteArgs {
|
|
|
15
15
|
get SupportedType() {
|
|
16
16
|
return interfaces_1.ParameterType.FromHeader;
|
|
17
17
|
}
|
|
18
|
-
async extract(callData, param, req) {
|
|
18
|
+
async extract(callData, param, req, _res, route) {
|
|
19
19
|
let arg = param.Options && param.Options.key ? req.headers[param.Options.key] : req.headers[param.Name.toLowerCase()];
|
|
20
|
-
return { CallData: callData, Args: await this.tryHydrateParam(arg, param) };
|
|
20
|
+
return { CallData: callData, Args: await this.tryHydrateParam(arg, param, route) };
|
|
21
21
|
}
|
|
22
22
|
handleDate(arg) {
|
|
23
23
|
return luxon_1.DateTime.fromHTTP(arg.startsWith('Date:') ? arg.substring(5).trim() : arg.trim());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FromHeaderArg.js","sourceRoot":"","sources":["../../src/route-args/FromHeaderArg.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"FromHeaderArg.js","sourceRoot":"","sources":["../../src/route-args/FromHeaderArg.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,8CAAmF;AAEnF,oCAAyC;AAEzC,iCAAiC;AAGjC,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,qBAAS;IACvC,IAAW,aAAa;QACtB,OAAO,0BAAa,CAAC,UAAU,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAsB,EAAE,GAAoB,EAAE,IAAsB,EAAE,KAAa;QAC5H,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACtH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;IACrF,CAAC;IAES,UAAU,CAAC,GAAQ;QAC3B,OAAO,gBAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3F,CAAC;CACF,CAAA;AAbY,UAAU;IADtB,IAAA,eAAU,GAAE;GACA,UAAU,CAatB;AAbY,gCAAU"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { RouteArgs } from './RouteArgs';
|
|
2
|
-
import { IRouteParameter, ParameterType, IRouteCall } from '../interfaces';
|
|
2
|
+
import { IRouteParameter, ParameterType, IRouteCall, IRoute } from '../interfaces';
|
|
3
3
|
import * as express from 'express';
|
|
4
4
|
export declare class FromParams extends RouteArgs {
|
|
5
5
|
get SupportedType(): ParameterType;
|
|
6
|
-
extract(callData: IRouteCall, param: IRouteParameter, req: express.Request): Promise<{
|
|
6
|
+
extract(callData: IRouteCall, param: IRouteParameter, req: express.Request, _res: express.Response, route: IRoute): Promise<{
|
|
7
7
|
CallData: IRouteCall;
|
|
8
8
|
Args: any;
|
|
9
9
|
}>;
|
|
@@ -14,8 +14,8 @@ let FromParams = class FromParams extends RouteArgs_1.RouteArgs {
|
|
|
14
14
|
get SupportedType() {
|
|
15
15
|
return interfaces_1.ParameterType.FromParams;
|
|
16
16
|
}
|
|
17
|
-
async extract(callData, param, req) {
|
|
18
|
-
return { CallData: callData, Args: await this.tryHydrateParam(req.params[param.Name], param) };
|
|
17
|
+
async extract(callData, param, req, _res, route) {
|
|
18
|
+
return { CallData: callData, Args: await this.tryHydrateParam(req.params[param.Name], param, route) };
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
21
|
FromParams = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FromParams.js","sourceRoot":"","sources":["../../src/route-args/FromParams.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"FromParams.js","sourceRoot":"","sources":["../../src/route-args/FromParams.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,8CAAmF;AAEnF,oCAAyC;AAGzC,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,qBAAS;IACvC,IAAW,aAAa;QACtB,OAAO,0BAAa,CAAC,UAAU,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAsB,EAAE,GAAoB,EAAE,IAAsB,EAAE,KAAa;QAC5H,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;IACxG,CAAC;CACF,CAAA;AARY,UAAU;IADtB,IAAA,eAAU,GAAE;GACA,UAAU,CAQtB;AARY,gCAAU"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { RouteArgs } from './RouteArgs';
|
|
2
|
-
import { IRouteParameter, ParameterType, IRouteCall } from '../interfaces';
|
|
2
|
+
import { IRouteParameter, ParameterType, IRouteCall, IRoute } from '../interfaces';
|
|
3
3
|
import * as express from 'express';
|
|
4
4
|
export declare class FromQuery extends RouteArgs {
|
|
5
5
|
get SupportedType(): ParameterType;
|
|
6
|
-
extract(callData: IRouteCall, param: IRouteParameter, req: express.Request): Promise<{
|
|
6
|
+
extract(callData: IRouteCall, param: IRouteParameter, req: express.Request, _res: express.Response, route: IRoute): Promise<{
|
|
7
7
|
CallData: IRouteCall;
|
|
8
8
|
Args: any;
|
|
9
9
|
}>;
|
|
@@ -14,8 +14,8 @@ let FromQuery = class FromQuery extends RouteArgs_1.RouteArgs {
|
|
|
14
14
|
get SupportedType() {
|
|
15
15
|
return interfaces_1.ParameterType.FromQuery;
|
|
16
16
|
}
|
|
17
|
-
async extract(callData, param, req) {
|
|
18
|
-
return { CallData: callData, Args: await this.tryHydrateParam(req.query[param.Name], param) };
|
|
17
|
+
async extract(callData, param, req, _res, route) {
|
|
18
|
+
return { CallData: callData, Args: await this.tryHydrateParam(req.query[param.Name], param, route) };
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
21
|
FromQuery = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FromQuery.js","sourceRoot":"","sources":["../../src/route-args/FromQuery.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"FromQuery.js","sourceRoot":"","sources":["../../src/route-args/FromQuery.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,8CAAmF;AAEnF,oCAAyC;AAIzC,IAAa,SAAS,GAAtB,MAAa,SAAU,SAAQ,qBAAS;IACtC,IAAW,aAAa;QACtB,OAAO,0BAAa,CAAC,SAAS,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAsB,EAAE,GAAoB,EAAE,IAAsB,EAAE,KAAa;QAC5H,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;IACvG,CAAC;CACF,CAAA;AARY,SAAS;IADrB,IAAA,eAAU,GAAE;GACA,SAAS,CAQrB;AARY,8BAAS"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ParameterType, IRouteParameter, IRouteCall, IRoute } from './../interfaces';
|
|
2
2
|
import * as express from 'express';
|
|
3
3
|
import { DateTime } from 'luxon';
|
|
4
|
+
import { DataValidator } from '@spinajs/validation';
|
|
4
5
|
export interface IRouteArgsResult {
|
|
5
6
|
CallData: IRouteCall;
|
|
6
7
|
Args: any;
|
|
@@ -10,10 +11,11 @@ export interface IRouteArgs {
|
|
|
10
11
|
extract(callData: IRouteCall, routeParameter: IRouteParameter, req: express.Request, res: express.Response, route?: IRoute): Promise<IRouteArgsResult>;
|
|
11
12
|
}
|
|
12
13
|
export declare abstract class RouteArgs implements IRouteArgs {
|
|
14
|
+
protected Validator: DataValidator;
|
|
13
15
|
abstract get SupportedType(): ParameterType | string;
|
|
14
16
|
abstract extract(callData: IRouteCall, routeParameter: IRouteParameter, req: express.Request, res: express.Response, route?: IRoute): Promise<IRouteArgsResult>;
|
|
15
17
|
protected handleDate(arg: any): DateTime;
|
|
16
|
-
protected tryHydrateParam(arg: any, routeParameter: IRouteParameter): Promise<any>;
|
|
18
|
+
protected tryHydrateParam(arg: any, routeParameter: IRouteParameter, route: IRoute): Promise<any>;
|
|
17
19
|
protected tryHydrateObject(arg: any, param: IRouteParameter): Promise<any[]>;
|
|
18
20
|
protected fromRuntimeType(param: IRouteParameter, arg: any): any;
|
|
19
21
|
}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
2
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
13
|
};
|
|
@@ -8,6 +17,7 @@ const di_1 = require("@spinajs/di");
|
|
|
8
17
|
const di_2 = require("@spinajs/di");
|
|
9
18
|
const lodash_1 = __importDefault(require("lodash"));
|
|
10
19
|
const luxon_1 = require("luxon");
|
|
20
|
+
const validation_1 = require("@spinajs/validation");
|
|
11
21
|
class RouteArgs {
|
|
12
22
|
handleDate(arg) {
|
|
13
23
|
const milis = Number(arg);
|
|
@@ -19,8 +29,17 @@ class RouteArgs {
|
|
|
19
29
|
}
|
|
20
30
|
return luxon_1.DateTime.invalid('no iso or unix timestamp');
|
|
21
31
|
}
|
|
22
|
-
async tryHydrateParam(arg, routeParameter) {
|
|
32
|
+
async tryHydrateParam(arg, routeParameter, route) {
|
|
23
33
|
let result = null;
|
|
34
|
+
// first validate route parameter / body params etc
|
|
35
|
+
if (route.Schema && route.Schema[routeParameter.Name]) {
|
|
36
|
+
this.Validator.validate(route.Schema[routeParameter.Name], arg);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
if (routeParameter.RouteParamSchema) {
|
|
40
|
+
this.Validator.validate(routeParameter.RouteParamSchema, arg);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
24
43
|
const [hydrated, hValue] = await this.tryHydrateObject(arg, routeParameter);
|
|
25
44
|
if (hydrated) {
|
|
26
45
|
result = hValue;
|
|
@@ -28,6 +47,14 @@ class RouteArgs {
|
|
|
28
47
|
else {
|
|
29
48
|
result = this.fromRuntimeType(routeParameter, arg);
|
|
30
49
|
}
|
|
50
|
+
// if we have complex object,
|
|
51
|
+
// validate hydrated result
|
|
52
|
+
if (routeParameter.Schema) {
|
|
53
|
+
this.Validator.validate(routeParameter.Schema, result);
|
|
54
|
+
}
|
|
55
|
+
else if (lodash_1.default.isObject(result)) {
|
|
56
|
+
this.Validator.validate(result);
|
|
57
|
+
}
|
|
31
58
|
return result;
|
|
32
59
|
}
|
|
33
60
|
async tryHydrateObject(arg, param) {
|
|
@@ -43,6 +70,19 @@ class RouteArgs {
|
|
|
43
70
|
const result = await hInstance.hydrate(arg, param);
|
|
44
71
|
return [true, result];
|
|
45
72
|
}
|
|
73
|
+
else if (param.RuntimeType.name === 'Object' || param.RuntimeType.name === 'Array') {
|
|
74
|
+
return [true, lodash_1.default.isString(arg) ? JSON.parse(arg) : arg];
|
|
75
|
+
}
|
|
76
|
+
else if (param.RuntimeType.name === 'DateTime') {
|
|
77
|
+
return [true, this.handleDate(arg)];
|
|
78
|
+
}
|
|
79
|
+
else if (param.RuntimeType.name === 'TypedArray') {
|
|
80
|
+
const type = param.RuntimeType.Type;
|
|
81
|
+
return [true, new type(lodash_1.default.isString(arg) ? JSON.parse(arg) : arg)];
|
|
82
|
+
}
|
|
83
|
+
else if (['Number', 'String', 'Boolean', 'Null', 'Undefined', 'BigInt', 'Symbol'].indexOf(param.RuntimeType.name) === -1) {
|
|
84
|
+
return [true, new param.RuntimeType(lodash_1.default.isString(arg) ? JSON.parse(arg) : arg)];
|
|
85
|
+
}
|
|
46
86
|
return [false, null];
|
|
47
87
|
}
|
|
48
88
|
fromRuntimeType(param, arg) {
|
|
@@ -52,20 +92,17 @@ class RouteArgs {
|
|
|
52
92
|
case 'String':
|
|
53
93
|
return arg;
|
|
54
94
|
case 'Number':
|
|
55
|
-
return Number(arg);
|
|
95
|
+
return arg ? Number(arg) : undefined;
|
|
56
96
|
case 'Boolean':
|
|
57
|
-
return arg.toLowerCase() === 'true' ? true : false;
|
|
58
|
-
case 'Object':
|
|
59
|
-
return lodash_1.default.isString(arg) ? JSON.parse(arg) : arg;
|
|
60
|
-
case 'DateTime':
|
|
61
|
-
return this.handleDate(arg);
|
|
62
|
-
case 'TypedArray':
|
|
63
|
-
const type = param.RuntimeType.Type;
|
|
64
|
-
return new type(lodash_1.default.isString(arg) ? JSON.parse(arg) : arg);
|
|
97
|
+
return arg ? (arg === 1 ? true : arg.toLowerCase() === 'true' ? true : false) : false;
|
|
65
98
|
default:
|
|
66
99
|
return new param.RuntimeType(lodash_1.default.isString(arg) ? JSON.parse(arg) : arg);
|
|
67
100
|
}
|
|
68
101
|
}
|
|
69
102
|
}
|
|
103
|
+
__decorate([
|
|
104
|
+
(0, di_1.Autoinject)(),
|
|
105
|
+
__metadata("design:type", validation_1.DataValidator)
|
|
106
|
+
], RouteArgs.prototype, "Validator", void 0);
|
|
70
107
|
exports.RouteArgs = RouteArgs;
|
|
71
108
|
//# sourceMappingURL=RouteArgs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteArgs.js","sourceRoot":"","sources":["../../src/route-args/RouteArgs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RouteArgs.js","sourceRoot":"","sources":["../../src/route-args/RouteArgs.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,13 +3,34 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export declare const ROUTE_ARG_SCHEMA: {
|
|
5
5
|
Number: {
|
|
6
|
-
|
|
6
|
+
oneOf: ({
|
|
7
|
+
type: string[];
|
|
8
|
+
pattern?: undefined;
|
|
9
|
+
} | {
|
|
10
|
+
type: string;
|
|
11
|
+
pattern: string;
|
|
12
|
+
})[];
|
|
7
13
|
};
|
|
8
14
|
String: {
|
|
9
|
-
type: string;
|
|
15
|
+
type: string[];
|
|
10
16
|
maxLength: number;
|
|
11
17
|
};
|
|
12
18
|
Boolean: {
|
|
13
|
-
|
|
19
|
+
oneOf: ({
|
|
20
|
+
type: string;
|
|
21
|
+
pattern?: undefined;
|
|
22
|
+
minimum?: undefined;
|
|
23
|
+
maximum?: undefined;
|
|
24
|
+
} | {
|
|
25
|
+
type: string;
|
|
26
|
+
pattern: string;
|
|
27
|
+
minimum?: undefined;
|
|
28
|
+
maximum?: undefined;
|
|
29
|
+
} | {
|
|
30
|
+
type: string;
|
|
31
|
+
minimum: number;
|
|
32
|
+
maximum: number;
|
|
33
|
+
pattern?: undefined;
|
|
34
|
+
})[];
|
|
14
35
|
};
|
|
15
36
|
};
|
|
@@ -6,14 +6,22 @@ exports.ROUTE_ARG_SCHEMA = void 0;
|
|
|
6
6
|
*/
|
|
7
7
|
exports.ROUTE_ARG_SCHEMA = {
|
|
8
8
|
Number: {
|
|
9
|
-
|
|
9
|
+
oneOf: [
|
|
10
|
+
{
|
|
11
|
+
type: ['number'],
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
type: 'string',
|
|
15
|
+
pattern: '^[0-9]+$',
|
|
16
|
+
},
|
|
17
|
+
],
|
|
10
18
|
},
|
|
11
19
|
String: {
|
|
12
|
-
type: 'string',
|
|
20
|
+
type: ['string'],
|
|
13
21
|
maxLength: 512,
|
|
14
22
|
},
|
|
15
23
|
Boolean: {
|
|
16
|
-
type: 'boolean',
|
|
24
|
+
oneOf: [{ type: 'boolean' }, { type: 'string', pattern: '^true|false|0|1$' }, { type: 'integer', minimum: 0, maximum: 1 }],
|
|
17
25
|
},
|
|
18
26
|
};
|
|
19
27
|
//# sourceMappingURL=RouteArgsSchemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteArgsSchemas.js","sourceRoot":"","sources":["../../src/schemas/RouteArgsSchemas.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,gBAAgB,GAAG;IAC9B,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"file":"RouteArgsSchemas.js","sourceRoot":"","sources":["../../src/schemas/RouteArgsSchemas.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,gBAAgB,GAAG;IAC9B,MAAM,EAAE;QACN,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,CAAC,QAAQ,CAAC;aACjB;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,UAAU;aACpB;SACF;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,QAAQ,CAAC;QAChB,SAAS,EAAE,GAAG;KACf;IACD,OAAO,EAAE;QACP,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;KAC3H;CACF,CAAC"}
|
package/lib/server.d.ts
CHANGED
|
@@ -4,10 +4,12 @@ import { Configuration } from '@spinajs/configuration';
|
|
|
4
4
|
import { Log } from '@spinajs/log';
|
|
5
5
|
import { Server } from 'http';
|
|
6
6
|
import { RequestHandler } from 'express';
|
|
7
|
+
import { ServerMiddleware } from './interfaces';
|
|
7
8
|
import Express = require('express');
|
|
8
9
|
export declare class HttpServer extends AsyncModule {
|
|
9
10
|
protected Configuration: Configuration;
|
|
10
11
|
protected Container: IContainer;
|
|
12
|
+
protected Middlewares: ServerMiddleware[];
|
|
11
13
|
/**
|
|
12
14
|
* Express app instance
|
|
13
15
|
*/
|
package/lib/server.js
CHANGED
|
@@ -55,6 +55,15 @@ let HttpServer = class HttpServer extends di_1.AsyncModule {
|
|
|
55
55
|
this.Configuration.get('http.middlewares', []).forEach((m) => {
|
|
56
56
|
this.use(m);
|
|
57
57
|
});
|
|
58
|
+
this.Middlewares = this.Middlewares.sort((a, b) => {
|
|
59
|
+
return a.Order - b.Order;
|
|
60
|
+
});
|
|
61
|
+
// register other server middlewares
|
|
62
|
+
this.Middlewares.forEach((m) => {
|
|
63
|
+
const f = m.before();
|
|
64
|
+
if (f)
|
|
65
|
+
this.use(f);
|
|
66
|
+
});
|
|
58
67
|
/**
|
|
59
68
|
* Server static files
|
|
60
69
|
*/
|
|
@@ -77,6 +86,12 @@ let HttpServer = class HttpServer extends di_1.AsyncModule {
|
|
|
77
86
|
return new Promise((res, rej) => {
|
|
78
87
|
this.handleResponse();
|
|
79
88
|
this.handleErrors();
|
|
89
|
+
// add all middlewares to execute after
|
|
90
|
+
this.Middlewares.reverse().forEach((m) => {
|
|
91
|
+
const f = m.after();
|
|
92
|
+
if (f)
|
|
93
|
+
this.use(f);
|
|
94
|
+
});
|
|
80
95
|
this.Server = this.Express.listen(port, () => {
|
|
81
96
|
this.Log.info(`Http server started at port ${port}`);
|
|
82
97
|
res();
|
|
@@ -185,6 +200,10 @@ __decorate([
|
|
|
185
200
|
(0, di_1.Autoinject)(di_1.Container),
|
|
186
201
|
__metadata("design:type", Object)
|
|
187
202
|
], HttpServer.prototype, "Container", void 0);
|
|
203
|
+
__decorate([
|
|
204
|
+
(0, di_1.Autoinject)(interfaces_1.ServerMiddleware),
|
|
205
|
+
__metadata("design:type", Array)
|
|
206
|
+
], HttpServer.prototype, "Middlewares", void 0);
|
|
188
207
|
__decorate([
|
|
189
208
|
(0, log_1.Logger)('http'),
|
|
190
209
|
__metadata("design:type", log_1.Log)
|
package/lib/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oEAAqE;AAGrE,oCAAyF;AACzF,0DAAuD;AACvD,sCAA2C;AAG3C,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|