@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
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { RouteArgs, IRouteArgsResult } from './RouteArgs.js';
|
|
2
|
+
import { IRouteParameter, ParameterType, IRouteCall, Request } from '../interfaces.js';
|
|
3
|
+
/**
|
|
4
|
+
* Client IP address, as resolved by the RealIp middleware
|
|
5
|
+
* (`req.storage.realIp`, X-Forwarded-For aware with socket fallback).
|
|
6
|
+
*/
|
|
7
|
+
export declare class IpRouteArgs extends RouteArgs {
|
|
8
|
+
get SupportedType(): ParameterType | string;
|
|
9
|
+
extract(callData: IRouteCall, _args: unknown[], _param: IRouteParameter, req: Request): Promise<IRouteArgsResult>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Per-request correlation id set by the RequestId middleware. Same value as
|
|
13
|
+
* the `x-request-id` response header.
|
|
14
|
+
*/
|
|
15
|
+
export declare class RequestIdRouteArgs extends RouteArgs {
|
|
16
|
+
get SupportedType(): ParameterType | string;
|
|
17
|
+
extract(callData: IRouteCall, _args: unknown[], _param: IRouteParameter, req: Request): Promise<IRouteArgsResult>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* `User-Agent` request header.
|
|
21
|
+
*/
|
|
22
|
+
export declare class UserAgentRouteArgs extends RouteArgs {
|
|
23
|
+
get SupportedType(): ParameterType | string;
|
|
24
|
+
extract(callData: IRouteCall, _args: unknown[], _param: IRouteParameter, req: Request): Promise<IRouteArgsResult>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* `Referer` request header, accepting the alternative `Referrer` spelling.
|
|
28
|
+
*/
|
|
29
|
+
export declare class RefererRouteArgs extends RouteArgs {
|
|
30
|
+
get SupportedType(): ParameterType | string;
|
|
31
|
+
extract(callData: IRouteCall, _args: unknown[], _param: IRouteParameter, req: Request): Promise<IRouteArgsResult>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Raw request body as a Buffer, captured by the express.json `verify` hook.
|
|
35
|
+
* Intended for webhook signature verification, where the exact received bytes
|
|
36
|
+
* must be hashed (JSON round-tripping would change them). Available for JSON
|
|
37
|
+
* requests; undefined otherwise.
|
|
38
|
+
*/
|
|
39
|
+
export declare class RawBodyRouteArgs extends RouteArgs {
|
|
40
|
+
get SupportedType(): ParameterType | string;
|
|
41
|
+
extract(callData: IRouteCall, _args: unknown[], _param: IRouteParameter, req: Request): Promise<IRouteArgsResult>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=RequestContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestContext.d.ts","sourceRoot":"","sources":["../../../src/route-args/RequestContext.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;;;GAGG;AACH,qBACa,WAAY,SAAQ,SAAS;IACxC,IAAW,aAAa,IAAI,aAAa,GAAG,MAAM,CAEjD;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAG/H;AAED;;;GAGG;AACH,qBACa,kBAAmB,SAAQ,SAAS;IAC/C,IAAW,aAAa,IAAI,aAAa,GAAG,MAAM,CAEjD;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAG/H;AAED;;GAEG;AACH,qBACa,kBAAmB,SAAQ,SAAS;IAC/C,IAAW,aAAa,IAAI,aAAa,GAAG,MAAM,CAEjD;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAG/H;AAED;;GAEG;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,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAI/H;AAED;;;;;GAKG;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,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAG/H"}
|
|
@@ -0,0 +1,91 @@
|
|
|
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
|
+
/**
|
|
11
|
+
* Client IP address, as resolved by the RealIp middleware
|
|
12
|
+
* (`req.storage.realIp`, X-Forwarded-For aware with socket fallback).
|
|
13
|
+
*/
|
|
14
|
+
let IpRouteArgs = class IpRouteArgs extends RouteArgs {
|
|
15
|
+
get SupportedType() {
|
|
16
|
+
return ParameterType.Ip;
|
|
17
|
+
}
|
|
18
|
+
async extract(callData, _args, _param, req) {
|
|
19
|
+
return { CallData: callData, Args: req.storage?.realIp };
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
IpRouteArgs = __decorate([
|
|
23
|
+
Injectable()
|
|
24
|
+
], IpRouteArgs);
|
|
25
|
+
export { IpRouteArgs };
|
|
26
|
+
/**
|
|
27
|
+
* Per-request correlation id set by the RequestId middleware. Same value as
|
|
28
|
+
* the `x-request-id` response header.
|
|
29
|
+
*/
|
|
30
|
+
let RequestIdRouteArgs = class RequestIdRouteArgs extends RouteArgs {
|
|
31
|
+
get SupportedType() {
|
|
32
|
+
return ParameterType.RequestId;
|
|
33
|
+
}
|
|
34
|
+
async extract(callData, _args, _param, req) {
|
|
35
|
+
return { CallData: callData, Args: req.storage?.requestId };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
RequestIdRouteArgs = __decorate([
|
|
39
|
+
Injectable()
|
|
40
|
+
], RequestIdRouteArgs);
|
|
41
|
+
export { RequestIdRouteArgs };
|
|
42
|
+
/**
|
|
43
|
+
* `User-Agent` request header.
|
|
44
|
+
*/
|
|
45
|
+
let UserAgentRouteArgs = class UserAgentRouteArgs extends RouteArgs {
|
|
46
|
+
get SupportedType() {
|
|
47
|
+
return ParameterType.UserAgent;
|
|
48
|
+
}
|
|
49
|
+
async extract(callData, _args, _param, req) {
|
|
50
|
+
return { CallData: callData, Args: req.headers['user-agent'] };
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
UserAgentRouteArgs = __decorate([
|
|
54
|
+
Injectable()
|
|
55
|
+
], UserAgentRouteArgs);
|
|
56
|
+
export { UserAgentRouteArgs };
|
|
57
|
+
/**
|
|
58
|
+
* `Referer` request header, accepting the alternative `Referrer` spelling.
|
|
59
|
+
*/
|
|
60
|
+
let RefererRouteArgs = class RefererRouteArgs extends RouteArgs {
|
|
61
|
+
get SupportedType() {
|
|
62
|
+
return ParameterType.Referer;
|
|
63
|
+
}
|
|
64
|
+
async extract(callData, _args, _param, req) {
|
|
65
|
+
const referer = (req.headers.referer ?? req.headers['referrer']);
|
|
66
|
+
return { CallData: callData, Args: referer };
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
RefererRouteArgs = __decorate([
|
|
70
|
+
Injectable()
|
|
71
|
+
], RefererRouteArgs);
|
|
72
|
+
export { RefererRouteArgs };
|
|
73
|
+
/**
|
|
74
|
+
* Raw request body as a Buffer, captured by the express.json `verify` hook.
|
|
75
|
+
* Intended for webhook signature verification, where the exact received bytes
|
|
76
|
+
* must be hashed (JSON round-tripping would change them). Available for JSON
|
|
77
|
+
* requests; undefined otherwise.
|
|
78
|
+
*/
|
|
79
|
+
let RawBodyRouteArgs = class RawBodyRouteArgs extends RouteArgs {
|
|
80
|
+
get SupportedType() {
|
|
81
|
+
return ParameterType.RawBody;
|
|
82
|
+
}
|
|
83
|
+
async extract(callData, _args, _param, req) {
|
|
84
|
+
return { CallData: callData, Args: req.rawBody };
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
RawBodyRouteArgs = __decorate([
|
|
88
|
+
Injectable()
|
|
89
|
+
], RawBodyRouteArgs);
|
|
90
|
+
export { RawBodyRouteArgs };
|
|
91
|
+
//# sourceMappingURL=RequestContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestContext.js","sourceRoot":"","sources":["../../../src/route-args/RequestContext.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;AAEzC;;;GAGG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,SAAS;IACxC,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,EAAE,CAAC;IAC1B,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAgB,EAAE,MAAuB,EAAE,GAAY;QAChG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3D,CAAC;CACF,CAAA;AARY,WAAW;IADvB,UAAU,EAAE;GACA,WAAW,CAQvB;;AAED;;;GAGG;AAEI,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,SAAS;IAC/C,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,SAAS,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAgB,EAAE,MAAuB,EAAE,GAAY;QAChG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;IAC9D,CAAC;CACF,CAAA;AARY,kBAAkB;IAD9B,UAAU,EAAE;GACA,kBAAkB,CAQ9B;;AAED;;GAEG;AAEI,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,SAAS;IAC/C,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,SAAS,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAE,KAAgB,EAAE,MAAuB,EAAE,GAAY;QAChG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IACjE,CAAC;CACF,CAAA;AARY,kBAAkB;IAD9B,UAAU,EAAE;GACA,kBAAkB,CAQ9B;;AAED;;GAEG;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,MAAuB,EAAE,GAAY;QAChG,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAuB,CAAC;QACvF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC/C,CAAC;CACF,CAAA;AATY,gBAAgB;IAD5B,UAAU,EAAE;GACA,gBAAgB,CAS5B;;AAED;;;;;GAKG;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,MAAuB,EAAE,GAAY;QAChG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IACnD,CAAC;CACF,CAAA;AARY,gBAAgB;IAD5B,UAAU,EAAE;GACA,gBAAgB,CAQ5B"}
|
|
@@ -12,7 +12,7 @@ export declare class RequestTypeRouteArgs extends RouteArgs {
|
|
|
12
12
|
get SupportedType(): ParameterType;
|
|
13
13
|
extract(callData: IRouteCall, _args: unknown[], _param: IRouteParameter, req: express.Request, _res: express.Response, _route: IRoute): Promise<{
|
|
14
14
|
CallData: IRouteCall;
|
|
15
|
-
Args: HttpAcceptHeaders.JSON | HttpAcceptHeaders.HTML | HttpAcceptHeaders.IMAGE | HttpAcceptHeaders.PDF | HttpAcceptHeaders.OTHER;
|
|
15
|
+
Args: HttpAcceptHeaders.JSON | HttpAcceptHeaders.HTML | HttpAcceptHeaders.TEXT | HttpAcceptHeaders.IMAGE | HttpAcceptHeaders.PDF | HttpAcceptHeaders.OTHER;
|
|
16
16
|
}>;
|
|
17
17
|
}
|
|
18
18
|
export declare class QueryFieldRouteArg extends RouteArgs {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestFields.d.ts","sourceRoot":"","sources":["../../../src/route-args/RequestFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACzG,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAInC,qBACa,kBAAmB,SAAQ,SAAS;IAC/C,IAAW,aAAa,IAAI,aAAa,CAExC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAC,KAAK,EAAG,OAAO,EAAG,EAAG,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM;;;;CAMrJ;AACD,qBACa,oBAAqB,SAAQ,SAAS;IACjD,IAAW,aAAa,IAAI,aAAa,CAExC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAC,KAAK,EAAG,OAAO,EAAG,EAAG,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM;;;;
|
|
1
|
+
{"version":3,"file":"RequestFields.d.ts","sourceRoot":"","sources":["../../../src/route-args/RequestFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACzG,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAInC,qBACa,kBAAmB,SAAQ,SAAS;IAC/C,IAAW,aAAa,IAAI,aAAa,CAExC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAC,KAAK,EAAG,OAAO,EAAG,EAAG,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM;;;;CAMrJ;AACD,qBACa,oBAAqB,SAAQ,SAAS;IACjD,IAAW,aAAa,IAAI,aAAa,CAExC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAC,KAAK,EAAG,OAAO,EAAG,EAAG,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM;;;;CAgCrJ;AAED,qBACa,kBAAmB,SAAQ,SAAS;IAC/C,IAAW,aAAa,IAAI,aAAa,CAExC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAG,OAAO,EAAG,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM;;;;CAMrJ;AAED,qBACa,oBAAqB,SAAQ,SAAS;IACjD,IAAW,aAAa,IAAI,aAAa,CAExC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAC,KAAK,EAAG,OAAO,EAAG,EAAG,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM;;;;CAMrJ;AAED,qBACa,kBAAmB,SAAQ,SAAS;IAC/C,IAAW,aAAa,IAAI,aAAa,CAExC;IAEY,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAG,OAAO,EAAG,EAAG,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM;;;;CAMtJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestFields.js","sourceRoot":"","sources":["../../../src/route-args/RequestFields.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAmB,aAAa,EAAsB,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEzG,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIlC,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,SAAS;IAC/C,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,SAAS,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAC,KAAkB,EAAG,MAAuB,EAAE,GAAoB,EAAE,IAAsB,EAAE,MAAc;QAClJ,OAAO;YACL,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC;IACJ,CAAC;CACF,CAAA;AAXY,kBAAkB;IAD9B,UAAU,EAAE;GACA,kBAAkB,CAW9B;;AAEM,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,SAAS;IACjD,IAAW,aAAa;QACtB,OAAO,aAAa,CAAC,KAAK,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAoB,EAAC,KAAkB,EAAG,MAAuB,EAAE,GAAoB,EAAE,IAAsB,EAAE,MAAc;QAClJ,IAAI,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC;QAEzC,QAAQ,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;YAC1C,KAAK,QAAQ,CAAC;YACd,KAAK,WAAW;gBACd,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC;gBACtC,MAAM;YACR,KAAK,YAAY;gBACf,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"RequestFields.js","sourceRoot":"","sources":["../../../src/route-args/RequestFields.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteArgs.d.ts","sourceRoot":"","sources":["../../../src/route-args/RouteArgs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"RouteArgs.d.ts","sourceRoot":"","sources":["../../../src/route-args/RouteArgs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAC;AAGtE;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,GAAG,GAAG,CAa5F;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,UAAU,CAAC;IACrB,IAAI,EAAE,GAAG,CAAC;CACX;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,aAAa,GAAG,MAAM,CAAC;IAEtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACrK;AAED,8BAAsB,SAAU,YAAW,UAAU;IAEnD,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC;IAE5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,KAAK,aAAa,IAAI,aAAa,GAAG,MAAM,CAAC;aAErC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;cAEnK,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM;cAwDxE,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG;IAKhF,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe;IAW5C,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe;IAkC3D,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,eAAe;IAI9C,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG;CA8B3D"}
|
|
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import { DI, Autoinject, TypedArray, isClass } from '@spinajs/di';
|
|
11
11
|
import _ from 'lodash';
|
|
12
|
-
import { DataValidator } from '@spinajs/validation';
|
|
12
|
+
import { DataValidator, ValidationFailed } from '@spinajs/validation';
|
|
13
13
|
import { InvalidArgument } from '@spinajs/exceptions';
|
|
14
14
|
/**
|
|
15
15
|
* Extracts schema from runtime type. Handles TypedArray by extracting
|
|
@@ -36,6 +36,21 @@ export function extractSchemaFromRuntimeType(runtimeType, validator) {
|
|
|
36
36
|
}
|
|
37
37
|
export class RouteArgs {
|
|
38
38
|
async tryHydrateParam(arg, routeParameter, route) {
|
|
39
|
+
// Enforce presence for params explicitly marked `{ required: true }` BEFORE
|
|
40
|
+
// the null/undefined skip below (absent optional params are intentionally
|
|
41
|
+
// not validated). Params without the flag keep the old optional behavior.
|
|
42
|
+
if (routeParameter.Options?.required === true && (arg === undefined || arg === null || arg === '')) {
|
|
43
|
+
throw new ValidationFailed(`Parameter '${routeParameter.Name}' is required`, [
|
|
44
|
+
{
|
|
45
|
+
propertyName: routeParameter.Name,
|
|
46
|
+
message: `Parameter '${routeParameter.Name}' is required`,
|
|
47
|
+
keyword: 'required',
|
|
48
|
+
params: { missingParameter: routeParameter.Name },
|
|
49
|
+
schemaPath: '#/required',
|
|
50
|
+
instancePath: routeParameter.Name,
|
|
51
|
+
},
|
|
52
|
+
]);
|
|
53
|
+
}
|
|
39
54
|
let result = null;
|
|
40
55
|
let schema = null;
|
|
41
56
|
let hydrator = null;
|
|
@@ -54,14 +69,16 @@ export class RouteArgs {
|
|
|
54
69
|
}
|
|
55
70
|
if (this.isRuntimeType(routeParameter)) {
|
|
56
71
|
result = this.fromRuntimeType(routeParameter, arg);
|
|
57
|
-
|
|
72
|
+
// absent optional params are not validated - validator treats null / undefined data as failure
|
|
73
|
+
if (schema && result !== null && result !== undefined) {
|
|
58
74
|
this.Validator.validate(schema, result);
|
|
59
75
|
}
|
|
60
76
|
}
|
|
61
77
|
else {
|
|
62
78
|
hydrator = this.getHydrator(routeParameter);
|
|
63
79
|
result = hydrator ? arg : this.tryExtractObject(arg, routeParameter);
|
|
64
|
-
|
|
80
|
+
// absent optional params are not validated - validator treats null / undefined data as failure
|
|
81
|
+
if (schema && result !== null && result !== undefined) {
|
|
65
82
|
this.Validator.validate(schema, result);
|
|
66
83
|
}
|
|
67
84
|
if (hydrator) {
|
|
@@ -86,13 +103,24 @@ export class RouteArgs {
|
|
|
86
103
|
}
|
|
87
104
|
tryExtractObject(arg, param) {
|
|
88
105
|
try {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
106
|
+
// TypedArray must be checked BEFORE isClass: a TypedArray instance's
|
|
107
|
+
// constructor is `class TypedArray`, so isClass() reports true for it and
|
|
108
|
+
// would (wrongly) try `new <instance>()`. Handle the typed-array case here.
|
|
109
|
+
if (param.RuntimeType instanceof TypedArray) {
|
|
93
110
|
const type = param.RuntimeType.Type;
|
|
94
111
|
const arrData = _.isString(arg) ? JSON.parse(arg) : arg;
|
|
95
|
-
|
|
112
|
+
if (arrData === null || arrData === undefined) {
|
|
113
|
+
return [];
|
|
114
|
+
}
|
|
115
|
+
if (!Array.isArray(arrData)) {
|
|
116
|
+
// A typed-array param requires a JSON array; a non-array value is a
|
|
117
|
+
// client error (400), not an uncaught TypeError from .map (500).
|
|
118
|
+
throw new InvalidArgument(`Parameter '${param.Name}' must be a JSON array`, param.Name);
|
|
119
|
+
}
|
|
120
|
+
return arrData.map((x) => new type(x));
|
|
121
|
+
}
|
|
122
|
+
else if (isClass(param.RuntimeType)) {
|
|
123
|
+
return new param.RuntimeType(_.isString(arg) ? JSON.parse(arg) : arg);
|
|
96
124
|
}
|
|
97
125
|
else if (param.RuntimeType.name === 'Object' || param.RuntimeType.name === 'Array') {
|
|
98
126
|
return _.isString(arg) ? JSON.parse(arg) : arg;
|
|
@@ -117,11 +145,23 @@ export class RouteArgs {
|
|
|
117
145
|
case 'String':
|
|
118
146
|
return arg;
|
|
119
147
|
case 'Number':
|
|
120
|
-
|
|
148
|
+
// Only treat truly-absent values as undefined — `0` is a valid number
|
|
149
|
+
// and must not be coerced away (JSON body can carry a literal 0).
|
|
150
|
+
return arg === undefined || arg === null || arg === '' ? undefined : Number(arg);
|
|
121
151
|
case 'BigInt':
|
|
122
|
-
|
|
152
|
+
try {
|
|
153
|
+
return BigInt(arg);
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
throw new InvalidArgument(`Argument '${param.Name}' is not a valid integer`, err);
|
|
157
|
+
}
|
|
123
158
|
case 'Boolean':
|
|
124
|
-
|
|
159
|
+
// A JSON body can deliver a real boolean; return it as-is instead of
|
|
160
|
+
// calling String.toLowerCase on it (which threw). Query/param values
|
|
161
|
+
// arrive as strings and are matched case-insensitively.
|
|
162
|
+
if (typeof arg === 'boolean')
|
|
163
|
+
return arg;
|
|
164
|
+
return arg ? arg === 1 || String(arg).toLowerCase() === 'true' : false;
|
|
125
165
|
case 'Undefined':
|
|
126
166
|
return undefined;
|
|
127
167
|
case 'Null':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteArgs.js","sourceRoot":"","sources":["../../../src/route-args/RouteArgs.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAIlE,OAAO,CAAC,MAAM,QAAQ,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"RouteArgs.js","sourceRoot":"","sources":["../../../src/route-args/RouteArgs.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,8 @@ export * from './FromForm.js';
|
|
|
8
8
|
export * from './FromHeaderArg.js';
|
|
9
9
|
export * from './FromParams.js';
|
|
10
10
|
export * from './FromQuery.js';
|
|
11
|
+
export * from './FromXml.js';
|
|
12
|
+
export * from './RequestContext.js';
|
|
11
13
|
export * from './RouteArgs.js';
|
|
12
14
|
export * from './RequestFields.js';
|
|
13
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/route-args/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/route-args/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
|
|
@@ -8,6 +8,8 @@ export * from './FromForm.js';
|
|
|
8
8
|
export * from './FromHeaderArg.js';
|
|
9
9
|
export * from './FromParams.js';
|
|
10
10
|
export * from './FromQuery.js';
|
|
11
|
+
export * from './FromXml.js';
|
|
12
|
+
export * from './RequestContext.js';
|
|
11
13
|
export * from './RouteArgs.js';
|
|
12
14
|
export * from './RequestFields.js';
|
|
13
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/route-args/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/route-args/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
|
package/lib/mjs/server.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import '@spinajs/templates-pug';
|
|
|
5
5
|
import { Server as Http } from 'http';
|
|
6
6
|
import { Server as Https } from 'https';
|
|
7
7
|
import Express, { ErrorRequestHandler, RequestHandler } from 'express';
|
|
8
|
-
import { ServerMiddleware, IHttpServerConfiguration } from './interfaces.js';
|
|
8
|
+
import { ServerMiddleware, IHttpServerConfiguration, LifecycleState } from './interfaces.js';
|
|
9
9
|
import './transformers/index.js';
|
|
10
10
|
import './middlewares/ResponseTime.js';
|
|
11
11
|
import './middlewares/RequestId.js';
|
|
@@ -25,6 +25,7 @@ export declare class HttpServer extends AsyncService {
|
|
|
25
25
|
protected HttpConfig: IHttpServerConfiguration;
|
|
26
26
|
protected HttpsEnabled: boolean;
|
|
27
27
|
protected AppEnv: string;
|
|
28
|
+
protected ShutdownTimeout: number;
|
|
28
29
|
/**
|
|
29
30
|
* Express app instance
|
|
30
31
|
*/
|
|
@@ -38,6 +39,23 @@ export declare class HttpServer extends AsyncService {
|
|
|
38
39
|
* Track active connections for cleanup
|
|
39
40
|
*/
|
|
40
41
|
protected _connections: Set<any>;
|
|
42
|
+
/**
|
|
43
|
+
* Lifecycle state. All three public entry points ( start / stop / dispose )
|
|
44
|
+
* transition through it so double-close, restart and idempotency are decided
|
|
45
|
+
* in one place.
|
|
46
|
+
*/
|
|
47
|
+
protected _state: LifecycleState;
|
|
48
|
+
/**
|
|
49
|
+
* The in-flight close promise, so concurrent / repeated stop() calls share one
|
|
50
|
+
* shutdown rather than each issuing a second Server.close().
|
|
51
|
+
*/
|
|
52
|
+
protected _closePromise: Promise<void> | null;
|
|
53
|
+
/**
|
|
54
|
+
* After-middlewares ( NotFound / ErrorHandler / ServerTiming ... ) attach to
|
|
55
|
+
* the Express app exactly once per instance. Restart must not re-stack them.
|
|
56
|
+
*/
|
|
57
|
+
protected _afterAttached: boolean;
|
|
58
|
+
get State(): LifecycleState;
|
|
41
59
|
get Server(): Http | Https;
|
|
42
60
|
/**
|
|
43
61
|
* Logger for this module
|
|
@@ -57,11 +75,26 @@ export declare class HttpServer extends AsyncService {
|
|
|
57
75
|
* Starts http server & express
|
|
58
76
|
*/
|
|
59
77
|
start(): Promise<void>;
|
|
60
|
-
stop(): void;
|
|
61
78
|
/**
|
|
62
|
-
*
|
|
79
|
+
* Emit a lifecycle event on the DI bus, isolating the state machine from a
|
|
80
|
+
* throwing subscriber. Container.emit is synchronous, so without this guard a
|
|
81
|
+
* listener that throws would pre-empt the caller - eg. a throwing
|
|
82
|
+
* `http.server.listening` listener runs before res() and would hang start(),
|
|
83
|
+
* and a throwing `http.server.closing` listener would escape stop().
|
|
84
|
+
*/
|
|
85
|
+
protected _emit(event: string): void;
|
|
86
|
+
stop(): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* AsyncService teardown. HttpServer holds no resources beyond the socket
|
|
89
|
+
* server and its tracked connections, both released by stop(); this awaits it.
|
|
63
90
|
*/
|
|
64
91
|
dispose(): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Single shutdown path for both stop() and dispose(). Idempotent: repeated or
|
|
94
|
+
* concurrent calls share one Server.close() instead of issuing a second one
|
|
95
|
+
* ( which would reject with ERR_SERVER_NOT_RUNNING ).
|
|
96
|
+
*/
|
|
97
|
+
protected _close(): Promise<void>;
|
|
65
98
|
/**
|
|
66
99
|
* Force close all tracked connections
|
|
67
100
|
*/
|
package/lib/mjs/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAiD,MAAM,aAAa,CAAC;AACtG,OAAO,EAAU,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAU,GAAG,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,wBAAwB,CAAC;AAEhC,OAAO,EAAE,MAAM,IAAI,IAAI,EAAoC,MAAM,MAAM,CAAC;AACxE,OAAO,EAAE,MAAM,IAAI,KAAK,EAAqC,MAAM,OAAO,CAAC;AAE3E,OAAO,OAAO,EAAE,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIvE,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAiD,MAAM,aAAa,CAAC;AACtG,OAAO,EAAU,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAU,GAAG,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,wBAAwB,CAAC;AAEhC,OAAO,EAAE,MAAM,IAAI,IAAI,EAAoC,MAAM,MAAM,CAAC;AACxE,OAAO,EAAE,MAAM,IAAI,KAAK,EAAqC,MAAM,OAAO,CAAC;AAE3E,OAAO,OAAO,EAAE,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIvE,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AACvC,OAAO,4BAA4B,CAAC;AACpC,OAAO,yBAAyB,CAAC;AACjC,OAAO,6BAA6B,CAAC;AACrC,OAAO,2BAA2B,CAAC;AACnC,OAAO,+BAA+B,CAAC;AACvC,OAAO,4BAA4B,CAAC;AACpC,OAAO,8BAA8B,CAAC;AACtC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,qCAAqC,CAAC;AAC7C,OAAO,+BAA+B,CAAC;AAEvC,qBAEa,UAAW,SAAQ,YAAY;IAE1C,SAAS,CAAC,aAAa,EAAG,aAAa,CAAC;IAGxC,SAAS,CAAC,SAAS,EAAG,UAAU,CAAC;IAGjC,SAAS,CAAC,WAAW,EAAG,gBAAgB,EAAE,CAAC;IAG3C,SAAS,CAAC,UAAU,EAAG,wBAAwB,CAAC;IAGhD,SAAS,CAAC,YAAY,EAAG,OAAO,CAAC;IAKjC,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC;IAK1B,SAAS,CAAC,eAAe,EAAG,MAAM,CAAC;IAEnC;;OAEG;IACH,SAAS,CAAC,OAAO,EAAG,OAAO,CAAC,OAAO,CAAC;IAEpC;;OAEG;IACH,SAAS,CAAC,WAAW,EAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,YAAY,EAAG,KAAK,CAAC;IAE/B;;OAEG;IACH,SAAS,CAAC,YAAY,WAAkB;IAExC;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,cAAc,CAA0B;IAE1D;;;OAGG;IACH,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAQ;IAErD;;;OAGG;IACH,SAAS,CAAC,cAAc,UAAS;IAEjC,IAAW,KAAK,IAAI,cAAc,CAEjC;IAED,IAAW,MAAM,IAAI,IAAI,GAAG,KAAK,CAEhC;IAED;;OAEG;IAEH,SAAS,CAAC,GAAG,EAAG,GAAG,CAAC;;IAMP,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsCrC;;OAEG;IACH,OAAO,CAAC,aAAa;IAuDrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA+CnC;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC;;;;OAIG;IACH,SAAS,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAoDjC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;;;OAIG;IACI,GAAG,CAAC,UAAU,EAAE,cAAc,GAAG,mBAAmB,GAAG,IAAI;CAGnE"}
|