@tsed/platform-serverless 8.0.0-alpha.5 → 8.0.0-alpha.7
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/esm/builder/PlatformServerless.js.map +1 -1
- package/lib/esm/builder/PlatformServerlessHandler.js +1 -1
- package/lib/esm/builder/PlatformServerlessHandler.js.map +1 -1
- package/lib/esm/domain/ServerlessContext.js.map +1 -1
- package/lib/esm/domain/ServerlessRequest.js.map +1 -1
- package/lib/esm/domain/ServerlessResponse.js +5 -10
- package/lib/esm/domain/ServerlessResponse.js.map +1 -1
- package/lib/esm/domain/ServerlessResponseStream.js.map +1 -1
- package/lib/esm/exports.js +1 -1
- package/lib/esm/exports.js.map +1 -1
- package/lib/esm/utils/getRequestId.js.map +1 -1
- package/lib/esm/utils/setResponseHeaders.js.map +1 -1
- package/lib/types/builder/PlatformServerless.d.ts +2 -2
- package/lib/types/builder/PlatformServerlessHandler.d.ts +1 -1
- package/lib/types/domain/ServerlessContext.d.ts +1 -1
- package/lib/types/domain/ServerlessResponseStream.d.ts +3 -2
- package/lib/types/exports.d.ts +1 -1
- package/lib/types/utils/getRequestId.d.ts +1 -1
- package/lib/types/utils/setResponseHeaders.d.ts +1 -1
- package/package.json +17 -17
- package/vitest.config.mts +4 -4
- package/lib/cjs/builder/PlatformServerless.js +0 -180
- package/lib/cjs/builder/PlatformServerless.js.map +0 -1
- package/lib/cjs/builder/PlatformServerlessHandler.js +0 -113
- package/lib/cjs/builder/PlatformServerlessHandler.js.map +0 -1
- package/lib/cjs/domain/ServerlessContext.js +0 -41
- package/lib/cjs/domain/ServerlessContext.js.map +0 -1
- package/lib/cjs/domain/ServerlessEvent.js +0 -3
- package/lib/cjs/domain/ServerlessEvent.js.map +0 -1
- package/lib/cjs/domain/ServerlessRequest.js +0 -95
- package/lib/cjs/domain/ServerlessRequest.js.map +0 -1
- package/lib/cjs/domain/ServerlessResponse.js +0 -198
- package/lib/cjs/domain/ServerlessResponse.js.map +0 -1
- package/lib/cjs/domain/ServerlessResponseStream.js +0 -76
- package/lib/cjs/domain/ServerlessResponseStream.js.map +0 -1
- package/lib/cjs/exports.js +0 -17
- package/lib/cjs/exports.js.map +0 -1
- package/lib/cjs/index.js +0 -18
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/package.json +0 -3
- package/lib/cjs/utils/getRequestId.js +0 -15
- package/lib/cjs/utils/getRequestId.js.map +0 -1
- package/lib/cjs/utils/isInAWS.js +0 -12
- package/lib/cjs/utils/isInAWS.js.map +0 -1
- package/lib/cjs/utils/setResponseHeaders.js +0 -47
- package/lib/cjs/utils/setResponseHeaders.js.map +0 -1
- package/lib/esm/package.json +0 -3
- package/lib/types-esm/builder/PlatformServerless.d.ts +0 -37
- package/lib/types-esm/builder/PlatformServerlessHandler.d.ts +0 -14
- package/lib/types-esm/domain/ServerlessContext.d.ts +0 -26
- package/lib/types-esm/domain/ServerlessEvent.d.ts +0 -2
- package/lib/types-esm/domain/ServerlessRequest.d.ts +0 -59
- package/lib/types-esm/domain/ServerlessResponse.d.ts +0 -101
- package/lib/types-esm/domain/ServerlessResponseStream.d.ts +0 -27
- package/lib/types-esm/exports.d.ts +0 -3
- package/lib/types-esm/index.d.ts +0 -14
- package/lib/types-esm/utils/getRequestId.d.ts +0 -3
- package/lib/types-esm/utils/isInAWS.d.ts +0 -1
- package/lib/types-esm/utils/setResponseHeaders.d.ts +0 -6
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformServerlessHandler.js","sourceRoot":"","sources":["../../../src/builder/PlatformServerlessHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ServerlessContext = void 0;
|
|
4
|
-
const di_1 = require("@tsed/di");
|
|
5
|
-
const ServerlessRequest_js_1 = require("./ServerlessRequest.js");
|
|
6
|
-
const ServerlessResponse_js_1 = require("./ServerlessResponse.js");
|
|
7
|
-
class ServerlessContext extends di_1.DIContext {
|
|
8
|
-
constructor({ event, context, endpoint, responseStream, ...options }) {
|
|
9
|
-
super({
|
|
10
|
-
...options,
|
|
11
|
-
maxStackSize: 0
|
|
12
|
-
});
|
|
13
|
-
this.PLATFORM = "SERVERLESS";
|
|
14
|
-
this.context = context;
|
|
15
|
-
this.responseStream = responseStream;
|
|
16
|
-
this.event = {
|
|
17
|
-
...event,
|
|
18
|
-
headers: "headers" in event && event.headers
|
|
19
|
-
? Object.fromEntries(Object.entries(event.headers).map(([key, value]) => [key.toLowerCase(), value]))
|
|
20
|
-
: {}
|
|
21
|
-
};
|
|
22
|
-
this.request = new ServerlessRequest_js_1.ServerlessRequest(this);
|
|
23
|
-
this.response = new ServerlessResponse_js_1.ServerlessResponse(this);
|
|
24
|
-
this.endpoint = endpoint;
|
|
25
|
-
}
|
|
26
|
-
isHttpEvent() {
|
|
27
|
-
return "httpMethod" in this.event;
|
|
28
|
-
}
|
|
29
|
-
isAuthorizerEvent() {
|
|
30
|
-
return "type" in this.event && ["TOKEN", "REQUEST"].includes(this.event.type);
|
|
31
|
-
}
|
|
32
|
-
async destroy() {
|
|
33
|
-
await super.destroy();
|
|
34
|
-
this.response.destroy();
|
|
35
|
-
}
|
|
36
|
-
isDone() {
|
|
37
|
-
return this.response.isDone();
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
exports.ServerlessContext = ServerlessContext;
|
|
41
|
-
//# sourceMappingURL=ServerlessContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ServerlessContext.js","sourceRoot":"","sources":["../../../src/domain/ServerlessContext.ts"],"names":[],"mappings":";;;AAAA,iCAAqD;AAGrD,iEAAyD;AACzD,mEAA2D;AAU3D,MAAa,iBAA+D,SAAQ,cAAS;IAS3F,YAAY,EAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,EAAkC;QACjG,KAAK,CAAC;YACJ,GAAG,OAAO;YACV,YAAY,EAAE,CAAC;SAChB,CAAC,CAAC;QANI,aAAQ,GAAG,YAAY,CAAC;QAO/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,KAAK;YACR,OAAO,EACL,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO;gBACjC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;gBACrG,CAAC,CAAC,EAAE;SACT,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,wCAAiB,CAAQ,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,0CAAkB,CAAQ,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,WAAW;QACT,OAAO,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,iBAAiB;QACf,OAAO,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAc,CAAC,CAAC;IAC1F,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;CACF;AA5CD,8CA4CC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ServerlessEvent.js","sourceRoot":"","sources":["../../../src/domain/ServerlessEvent.ts"],"names":[],"mappings":""}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ServerlessRequest = void 0;
|
|
4
|
-
const core_1 = require("@tsed/core");
|
|
5
|
-
/**
|
|
6
|
-
* @platform
|
|
7
|
-
*/
|
|
8
|
-
class ServerlessRequest {
|
|
9
|
-
constructor($ctx) {
|
|
10
|
-
this.$ctx = $ctx;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* APIGatewayProxyEvent to no break the current code
|
|
14
|
-
* @note use getEvent() instead to use generic type
|
|
15
|
-
*/
|
|
16
|
-
get event() {
|
|
17
|
-
return this.getEvent();
|
|
18
|
-
}
|
|
19
|
-
get raw() {
|
|
20
|
-
return this.event;
|
|
21
|
-
}
|
|
22
|
-
get response() {
|
|
23
|
-
return this.$ctx.response;
|
|
24
|
-
}
|
|
25
|
-
get secure() {
|
|
26
|
-
return true;
|
|
27
|
-
}
|
|
28
|
-
get host() {
|
|
29
|
-
return this.get("host");
|
|
30
|
-
}
|
|
31
|
-
get protocol() {
|
|
32
|
-
return "https";
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Get the url of the request.
|
|
36
|
-
*
|
|
37
|
-
* Is equivalent of `express.response.originalUrl || express.response.url`.
|
|
38
|
-
*/
|
|
39
|
-
get url() {
|
|
40
|
-
return this.event.path;
|
|
41
|
-
}
|
|
42
|
-
get headers() {
|
|
43
|
-
return this.event.headers;
|
|
44
|
-
}
|
|
45
|
-
get method() {
|
|
46
|
-
return this.event.httpMethod;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Contains key-value pairs of data submitted in the request body. By default, it is `undefined`, and is populated when you use
|
|
50
|
-
* `body-parsing` middleware such as `express.json()` or `express.urlencoded()`.
|
|
51
|
-
*/
|
|
52
|
-
get body() {
|
|
53
|
-
try {
|
|
54
|
-
return this.event.body ? JSON.parse(this.event.body) : {};
|
|
55
|
-
}
|
|
56
|
-
catch (er) {
|
|
57
|
-
return this.event.body;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
get rawBody() {
|
|
61
|
-
return this.event.body;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* This property is an object containing properties mapped to the named route `parameters`.
|
|
65
|
-
* For example, if you have the route `/user/:name`, then the `name` property is available as `req.params.name`.
|
|
66
|
-
* This object defaults to `{}`.
|
|
67
|
-
*/
|
|
68
|
-
get params() {
|
|
69
|
-
return this.event.pathParameters || {};
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* This property is an object containing a property for each query string parameter in the route.
|
|
73
|
-
* When query parser is set to disabled, it is an empty object `{}`, otherwise it is the result of the configured query parser.
|
|
74
|
-
*/
|
|
75
|
-
get query() {
|
|
76
|
-
return this.event.queryStringParameters || {};
|
|
77
|
-
}
|
|
78
|
-
getEvent() {
|
|
79
|
-
return this.$ctx.event;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Returns the HTTP request header specified by field. The match is case-insensitive.
|
|
83
|
-
*
|
|
84
|
-
* ```typescript
|
|
85
|
-
* request.get('Content-Type') // => "text/plain"
|
|
86
|
-
* ```
|
|
87
|
-
*
|
|
88
|
-
* @param name
|
|
89
|
-
*/
|
|
90
|
-
get(name) {
|
|
91
|
-
return (0, core_1.getValue)(this.event.headers, name);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
exports.ServerlessRequest = ServerlessRequest;
|
|
95
|
-
//# sourceMappingURL=ServerlessRequest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ServerlessRequest.js","sourceRoot":"","sources":["../../../src/domain/ServerlessRequest.ts"],"names":[],"mappings":";;;AAAA,qCAAoC;AAIpC;;GAEG;AACH,MAAa,iBAAiB;IAC5B,YAAsB,IAA8B;QAA9B,SAAI,GAAJ,IAAI,CAA0B;IAAG,CAAC;IAExD;;;OAGG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,KAAyB,CAAC;IACxC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI;QACN,IAAI;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D;QAAC,OAAO,EAAE,EAAE;YACX,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;SACxB;IACH,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC;IAChD,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,KAAqB,CAAC;IACzC,CAAC;IAED;;;;;;;;OAQG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAA,eAAQ,EAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;CACF;AAjGD,8CAiGC"}
|
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ServerlessResponse = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const core_1 = require("@tsed/core");
|
|
6
|
-
const schema_1 = require("@tsed/schema");
|
|
7
|
-
const encodeurl_1 = tslib_1.__importDefault(require("encodeurl"));
|
|
8
|
-
const mime_1 = tslib_1.__importDefault(require("mime"));
|
|
9
|
-
/**
|
|
10
|
-
* @platform
|
|
11
|
-
*/
|
|
12
|
-
class ServerlessResponse {
|
|
13
|
-
#status;
|
|
14
|
-
#body;
|
|
15
|
-
#headers;
|
|
16
|
-
#locals;
|
|
17
|
-
#isHeadersSent;
|
|
18
|
-
constructor($ctx) {
|
|
19
|
-
this.$ctx = $ctx;
|
|
20
|
-
this.#status = 200;
|
|
21
|
-
this.#body = undefined;
|
|
22
|
-
this.#headers = {};
|
|
23
|
-
this.#locals = {};
|
|
24
|
-
this.#isHeadersSent = false;
|
|
25
|
-
}
|
|
26
|
-
get event() {
|
|
27
|
-
return this.$ctx.event;
|
|
28
|
-
}
|
|
29
|
-
get raw() {
|
|
30
|
-
return this.event;
|
|
31
|
-
}
|
|
32
|
-
get request() {
|
|
33
|
-
return this.$ctx.request;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Get the current statusCode
|
|
37
|
-
*/
|
|
38
|
-
get statusCode() {
|
|
39
|
-
return this.#status;
|
|
40
|
-
}
|
|
41
|
-
set statusCode(status) {
|
|
42
|
-
this.#status = status;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* An object that contains response local variables scoped to the request, and therefore available only to the view(s) rendered during that request / response cycle (if any). Otherwise, this property is identical to app.locals.
|
|
46
|
-
*
|
|
47
|
-
* This property is useful for exposing request-level information such as the request path name, authenticated user, user settings, and so on.
|
|
48
|
-
*/
|
|
49
|
-
get locals() {
|
|
50
|
-
return this.#locals;
|
|
51
|
-
}
|
|
52
|
-
get isHeadersSent() {
|
|
53
|
-
return this.#isHeadersSent;
|
|
54
|
-
}
|
|
55
|
-
getStatus() {
|
|
56
|
-
return this.#status;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Sets the HTTP status for the response.
|
|
60
|
-
*
|
|
61
|
-
* @param status
|
|
62
|
-
*/
|
|
63
|
-
status(status) {
|
|
64
|
-
this.#status = status;
|
|
65
|
-
return this;
|
|
66
|
-
}
|
|
67
|
-
set(name, value) {
|
|
68
|
-
return this.setHeader(name, value);
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Returns the HTTP response header specified by field. The match is case-insensitive.
|
|
72
|
-
*
|
|
73
|
-
* ```typescript
|
|
74
|
-
* response.get('Content-Type') // => "text/plain"
|
|
75
|
-
* ```
|
|
76
|
-
*
|
|
77
|
-
* @param name
|
|
78
|
-
*/
|
|
79
|
-
get(name) {
|
|
80
|
-
return (0, core_1.getValue)(this.#headers, name.toLowerCase());
|
|
81
|
-
}
|
|
82
|
-
getHeaders() {
|
|
83
|
-
return {
|
|
84
|
-
...this.#headers
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
hasStatus() {
|
|
88
|
-
return this.#status !== 200;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Set header `field` to `val`, or pass
|
|
92
|
-
* an object of header fields.
|
|
93
|
-
*
|
|
94
|
-
* Examples:
|
|
95
|
-
* ```typescript
|
|
96
|
-
* response.setHeaders({ Accept: 'text/plain', 'X-API-Key': 'tobi' });
|
|
97
|
-
* ```
|
|
98
|
-
*
|
|
99
|
-
* Aliased as `res.header()`.
|
|
100
|
-
*/
|
|
101
|
-
setHeaders(headers) {
|
|
102
|
-
// apply headers
|
|
103
|
-
Object.entries(headers).forEach(([key, item]) => {
|
|
104
|
-
this.setHeader(key, item);
|
|
105
|
-
});
|
|
106
|
-
return this;
|
|
107
|
-
}
|
|
108
|
-
setHeader(key, item) {
|
|
109
|
-
if (item !== null && item !== undefined) {
|
|
110
|
-
key = key.toLowerCase();
|
|
111
|
-
if (key === "location") {
|
|
112
|
-
// "back" is an alias for the referrer
|
|
113
|
-
if (item === "back") {
|
|
114
|
-
item = this.request.get("Referrer") || "/";
|
|
115
|
-
}
|
|
116
|
-
item = (0, encodeurl_1.default)(String(item));
|
|
117
|
-
}
|
|
118
|
-
this.#headers = {
|
|
119
|
-
...this.#headers,
|
|
120
|
-
[key.toLowerCase()]: item
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
return this;
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Set `Content-Type` response header with `type` through `mime.lookup()`
|
|
127
|
-
* when it does not contain "/", or set the Content-Type to `type` otherwise.
|
|
128
|
-
*
|
|
129
|
-
* Examples:
|
|
130
|
-
*
|
|
131
|
-
* res.type('.html');
|
|
132
|
-
* res.type('html');
|
|
133
|
-
* res.type('json');
|
|
134
|
-
* res.type('application/json');
|
|
135
|
-
* res.type('png');
|
|
136
|
-
*/
|
|
137
|
-
contentType(contentType) {
|
|
138
|
-
this.setHeader("Content-Type", mime_1.default.getType(contentType));
|
|
139
|
-
return this;
|
|
140
|
-
}
|
|
141
|
-
contentLength(length) {
|
|
142
|
-
this.setHeader("Content-Length", length);
|
|
143
|
-
return this;
|
|
144
|
-
}
|
|
145
|
-
getContentLength() {
|
|
146
|
-
if (this.get("Content-Length")) {
|
|
147
|
-
return parseInt(this.get("Content-Length"), 10) || 0;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
getContentType() {
|
|
151
|
-
return String(this.get("Content-Type") || "").split(";")[0];
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Redirects to the URL derived from the specified path, with specified status, a positive integer that corresponds to an [HTTP status code](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html).
|
|
155
|
-
* If not specified, status defaults to `302 Found`.
|
|
156
|
-
*
|
|
157
|
-
* @param status
|
|
158
|
-
* @param url
|
|
159
|
-
*/
|
|
160
|
-
redirect(status, url) {
|
|
161
|
-
// Set location header
|
|
162
|
-
const address = this.location(url).get("Location");
|
|
163
|
-
const body = `${(0, schema_1.getStatusMessage)(status)}. Redirecting to ${address}`;
|
|
164
|
-
this.status(status).set("Content-Length", Buffer.byteLength(body)).body(body);
|
|
165
|
-
return this;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Sets the response Location HTTP header to the specified path parameter.
|
|
169
|
-
*
|
|
170
|
-
* @param url
|
|
171
|
-
*/
|
|
172
|
-
location(url) {
|
|
173
|
-
return this.set("Location", url);
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Send any data to your consumer.
|
|
177
|
-
*
|
|
178
|
-
* This method accept a ReadableStream, a plain object, boolean, string, number, null and undefined data.
|
|
179
|
-
* It choose the better way to send the data.
|
|
180
|
-
*
|
|
181
|
-
* @param body
|
|
182
|
-
*/
|
|
183
|
-
body(body) {
|
|
184
|
-
this.#body = body;
|
|
185
|
-
return this;
|
|
186
|
-
}
|
|
187
|
-
getBody() {
|
|
188
|
-
return this.#body;
|
|
189
|
-
}
|
|
190
|
-
isDone() {
|
|
191
|
-
return this.#isHeadersSent;
|
|
192
|
-
}
|
|
193
|
-
destroy() {
|
|
194
|
-
this.#isHeadersSent = true;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
exports.ServerlessResponse = ServerlessResponse;
|
|
198
|
-
//# sourceMappingURL=ServerlessResponse.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ServerlessResponse.js","sourceRoot":"","sources":["../../../src/domain/ServerlessResponse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ServerlessResponseStream = void 0;
|
|
4
|
-
const node_stream_1 = require("node:stream");
|
|
5
|
-
const isInAWS_1 = require("../utils/isInAWS");
|
|
6
|
-
class ServerlessResponseStream extends node_stream_1.Stream.Writable {
|
|
7
|
-
#response;
|
|
8
|
-
constructor() {
|
|
9
|
-
super();
|
|
10
|
-
this._meta = { statusCode: 200, headers: {} };
|
|
11
|
-
this.#response = [];
|
|
12
|
-
}
|
|
13
|
-
static setMeta(resStream, meta) {
|
|
14
|
-
if ((0, isInAWS_1.isInAWS)()) {
|
|
15
|
-
// @ts-ignore
|
|
16
|
-
return awslambda.HttpResponseStream.from(resStream, meta);
|
|
17
|
-
}
|
|
18
|
-
resStream.setMeta(meta);
|
|
19
|
-
return resStream;
|
|
20
|
-
}
|
|
21
|
-
static streamifyResponse(handler) {
|
|
22
|
-
// Check for global awslambda
|
|
23
|
-
if ((0, isInAWS_1.isInAWS)()) {
|
|
24
|
-
// @ts-ignore
|
|
25
|
-
return awslambda.streamifyResponse(async (event, responseStream, context) => {
|
|
26
|
-
const isFallbackMode = context === undefined;
|
|
27
|
-
if (context === undefined) {
|
|
28
|
-
context = responseStream;
|
|
29
|
-
responseStream = new ServerlessResponseStream();
|
|
30
|
-
console.warn({
|
|
31
|
-
event: "WRONG_AWS_STREAM_CONFIGURATION",
|
|
32
|
-
message: "The lambda didn't receive a ResponseStream from AWS. Ts.ED therefore generated a ServerlessResponseStream as a fallback. This mode is not optimized for use in PRODUCTION. Please check the AWS configuration of your lambda."
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
await handler(event, responseStream, context);
|
|
36
|
-
if (isFallbackMode) {
|
|
37
|
-
return ServerlessResponseStream.buildResponse(responseStream);
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
return async (event, response, context) => {
|
|
43
|
-
const args = patchArgs([event, response, context]);
|
|
44
|
-
const responseStream = args[1];
|
|
45
|
-
await handler(...args);
|
|
46
|
-
return ServerlessResponseStream.buildResponse(responseStream);
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
static buildResponse(responseStream) {
|
|
51
|
-
return {
|
|
52
|
-
...responseStream._meta,
|
|
53
|
-
body: responseStream.getBufferedData().toString()
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
// streams, `chunk` may be any JavaScript value.
|
|
57
|
-
_write(chunk, encoding, callback) {
|
|
58
|
-
this.#response.push(Buffer.from(chunk, encoding));
|
|
59
|
-
callback();
|
|
60
|
-
}
|
|
61
|
-
setMeta(meta) {
|
|
62
|
-
this._meta = meta;
|
|
63
|
-
}
|
|
64
|
-
getBufferedData() {
|
|
65
|
-
return Buffer.concat(this.#response);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
exports.ServerlessResponseStream = ServerlessResponseStream;
|
|
69
|
-
function patchArgs(args) {
|
|
70
|
-
if (!(args[1] instanceof ServerlessResponseStream)) {
|
|
71
|
-
const responseStream = new ServerlessResponseStream();
|
|
72
|
-
return [args[0], responseStream, ...args.splice(1, -1)];
|
|
73
|
-
}
|
|
74
|
-
return args;
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=ServerlessResponseStream.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ServerlessResponseStream.js","sourceRoot":"","sources":["../../../src/domain/ServerlessResponseStream.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/exports.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Lambda = exports.Operation = exports.Options = exports.Patch = exports.Head = exports.Delete = exports.Put = exports.Post = exports.Get = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
tslib_1.__exportStar(require("@tsed/di"), exports);
|
|
6
|
-
var schema_1 = require("@tsed/schema");
|
|
7
|
-
Object.defineProperty(exports, "Get", { enumerable: true, get: function () { return schema_1.Get; } });
|
|
8
|
-
Object.defineProperty(exports, "Post", { enumerable: true, get: function () { return schema_1.Post; } });
|
|
9
|
-
Object.defineProperty(exports, "Put", { enumerable: true, get: function () { return schema_1.Put; } });
|
|
10
|
-
Object.defineProperty(exports, "Delete", { enumerable: true, get: function () { return schema_1.Delete; } });
|
|
11
|
-
Object.defineProperty(exports, "Head", { enumerable: true, get: function () { return schema_1.Head; } });
|
|
12
|
-
Object.defineProperty(exports, "Patch", { enumerable: true, get: function () { return schema_1.Patch; } });
|
|
13
|
-
Object.defineProperty(exports, "Options", { enumerable: true, get: function () { return schema_1.Options; } });
|
|
14
|
-
Object.defineProperty(exports, "Operation", { enumerable: true, get: function () { return schema_1.Operation; } });
|
|
15
|
-
Object.defineProperty(exports, "Lambda", { enumerable: true, get: function () { return schema_1.Operation; } });
|
|
16
|
-
tslib_1.__exportStar(require("@tsed/platform-params"), exports);
|
|
17
|
-
//# sourceMappingURL=exports.js.map
|
package/lib/cjs/exports.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../../src/exports.ts"],"names":[],"mappings":";;;;AAAA,mDAAyB;AACzB,uCAA0G;AAAlG,6FAAA,GAAG,OAAA;AAAE,8FAAA,IAAI,OAAA;AAAE,6FAAA,GAAG,OAAA;AAAE,gGAAA,MAAM,OAAA;AAAE,8FAAA,IAAI,OAAA;AAAE,+FAAA,KAAK,OAAA;AAAE,iGAAA,OAAO,OAAA;AAAE,mGAAA,SAAS,OAAA;AAAE,gGAAA,SAAS,OAAU;AACpF,gEAAsC"}
|
package/lib/cjs/index.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
/**
|
|
5
|
-
* @file Automatically generated by @tsed/barrels.
|
|
6
|
-
*/
|
|
7
|
-
tslib_1.__exportStar(require("./builder/PlatformServerless.js"), exports);
|
|
8
|
-
tslib_1.__exportStar(require("./builder/PlatformServerlessHandler.js"), exports);
|
|
9
|
-
tslib_1.__exportStar(require("./domain/ServerlessContext.js"), exports);
|
|
10
|
-
tslib_1.__exportStar(require("./domain/ServerlessEvent.js"), exports);
|
|
11
|
-
tslib_1.__exportStar(require("./domain/ServerlessRequest.js"), exports);
|
|
12
|
-
tslib_1.__exportStar(require("./domain/ServerlessResponse.js"), exports);
|
|
13
|
-
tslib_1.__exportStar(require("./domain/ServerlessResponseStream.js"), exports);
|
|
14
|
-
tslib_1.__exportStar(require("./exports.js"), exports);
|
|
15
|
-
tslib_1.__exportStar(require("./utils/getRequestId.js"), exports);
|
|
16
|
-
tslib_1.__exportStar(require("./utils/isInAWS.js"), exports);
|
|
17
|
-
tslib_1.__exportStar(require("./utils/setResponseHeaders.js"), exports);
|
|
18
|
-
//# sourceMappingURL=index.js.map
|
package/lib/cjs/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,0EAAgD;AAChD,iFAAuD;AACvD,wEAA8C;AAC9C,sEAA4C;AAC5C,wEAA8C;AAC9C,yEAA+C;AAC/C,+EAAqD;AACrD,uDAA6B;AAC7B,kEAAwC;AACxC,6DAAmC;AACnC,wEAA8C"}
|
package/lib/cjs/package.json
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getRequestId = void 0;
|
|
4
|
-
const uuid_1 = require("uuid");
|
|
5
|
-
function getRequestId(event, context) {
|
|
6
|
-
if ("headers" in event && event.headers["x-request-id"]) {
|
|
7
|
-
return event.headers["x-request-id"];
|
|
8
|
-
}
|
|
9
|
-
if ("requestContext" in event) {
|
|
10
|
-
return event?.requestContext?.requestId;
|
|
11
|
-
}
|
|
12
|
-
return context?.awsRequestId || (0, uuid_1.v4)().replace(/-/gi, "");
|
|
13
|
-
}
|
|
14
|
-
exports.getRequestId = getRequestId;
|
|
15
|
-
//# sourceMappingURL=getRequestId.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getRequestId.js","sourceRoot":"","sources":["../../../src/utils/getRequestId.ts"],"names":[],"mappings":";;;AACA,+BAAwB;AAGxB,SAAgB,YAAY,CAAC,KAAsB,EAAE,OAAgB;IACnE,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;QACvD,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;KACtC;IAED,IAAI,gBAAgB,IAAI,KAAK,EAAE;QAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC;KACzC;IAED,OAAO,OAAO,EAAE,YAAY,IAAI,IAAA,SAAE,GAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC1D,CAAC;AAVD,oCAUC"}
|
package/lib/cjs/utils/isInAWS.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isInAWS = void 0;
|
|
4
|
-
function isInAWS() {
|
|
5
|
-
return (
|
|
6
|
-
// @ts-ignore
|
|
7
|
-
globalThis.awslambda !== undefined &&
|
|
8
|
-
// @ts-ignore
|
|
9
|
-
awslambda.streamifyResponse !== undefined);
|
|
10
|
-
}
|
|
11
|
-
exports.isInAWS = isInAWS;
|
|
12
|
-
//# sourceMappingURL=isInAWS.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isInAWS.js","sourceRoot":"","sources":["../../../src/utils/isInAWS.ts"],"names":[],"mappings":";;;AAAA,SAAgB,OAAO;IACrB,OAAO;IACL,aAAa;IACb,UAAU,CAAC,SAAS,KAAK,SAAS;QAClC,aAAa;QACb,SAAS,CAAC,iBAAiB,KAAK,SAAS,CAC1C,CAAC;AACJ,CAAC;AAPD,0BAOC"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setResponseHeaders = void 0;
|
|
4
|
-
function mergeHeaders(specHeaders, headers) {
|
|
5
|
-
return Object.entries(specHeaders).reduce((headers, [key, item]) => {
|
|
6
|
-
key = key.toLowerCase();
|
|
7
|
-
const value = headers[key] === undefined ? item.example : headers[key];
|
|
8
|
-
if (value !== undefined) {
|
|
9
|
-
return {
|
|
10
|
-
...headers,
|
|
11
|
-
[key]: String(value)
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
return headers;
|
|
15
|
-
}, headers);
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* @ignore
|
|
19
|
-
*/
|
|
20
|
-
function setResponseHeaders(ctx) {
|
|
21
|
-
const { response, endpoint } = ctx;
|
|
22
|
-
if (ctx.isDone()) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
const operation = endpoint.operation;
|
|
26
|
-
if (!operation) {
|
|
27
|
-
ctx.logger.debug({
|
|
28
|
-
event: "MISSING_OPERATION_METADATA",
|
|
29
|
-
message: "No operation found on the endpoint. The response headers are not set.",
|
|
30
|
-
endpoint: endpoint
|
|
31
|
-
});
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
if (!response.hasStatus()) {
|
|
35
|
-
// apply status only if isn't already modified
|
|
36
|
-
response.status(operation.getStatus());
|
|
37
|
-
}
|
|
38
|
-
const statusCode = response.statusCode;
|
|
39
|
-
const headers = operation.getHeadersOf(response.statusCode);
|
|
40
|
-
const mergedHeaders = mergeHeaders(headers, response.getHeaders());
|
|
41
|
-
response.setHeaders(mergedHeaders);
|
|
42
|
-
if (operation.isRedirection(statusCode)) {
|
|
43
|
-
response.redirect(statusCode, String(mergedHeaders["location"]));
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
exports.setResponseHeaders = setResponseHeaders;
|
|
47
|
-
//# sourceMappingURL=setResponseHeaders.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setResponseHeaders.js","sourceRoot":"","sources":["../../../src/utils/setResponseHeaders.ts"],"names":[],"mappings":";;;AAKA,SAAS,YAAY,CAAC,WAA2D,EAAE,OAAoC;IACrH,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;QACjE,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAExB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEvE,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,OAAO;gBACL,GAAG,OAAO;gBACV,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;aACrB,CAAC;SACH;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,OAAO,CAAC,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,GAAuC;IACxE,MAAM,EAAC,QAAQ,EAAE,QAAQ,EAAC,GAAG,GAAG,CAAC;IACjC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE;QAChB,OAAO;KACR;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAsC,CAAC;IAElE,IAAI,CAAC,SAAS,EAAE;QACd,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;YACf,KAAK,EAAE,4BAA4B;YACnC,OAAO,EAAE,uEAAuE;YAChF,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;QACH,OAAO;KACR;IAED,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;QACzB,8CAA8C;QAC9C,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;KACxC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACvC,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAEnE,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAEnC,IAAI,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;QACvC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAClE;AACH,CAAC;AA/BD,gDA+BC"}
|
package/lib/esm/package.json
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Type } from "@tsed/core";
|
|
2
|
-
import { InjectorService } from "@tsed/di";
|
|
3
|
-
import type { Handler } from "aws-lambda";
|
|
4
|
-
import type { Instance } from "find-my-way";
|
|
5
|
-
import type { ServerlessEvent } from "../domain/ServerlessEvent";
|
|
6
|
-
import { type RequestHandler } from "../domain/ServerlessResponseStream";
|
|
7
|
-
export interface PlatformServerlessSettings extends Partial<TsED.Configuration> {
|
|
8
|
-
lambda?: Type[];
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* @platform
|
|
12
|
-
*/
|
|
13
|
-
export declare class PlatformServerless {
|
|
14
|
-
readonly name: string;
|
|
15
|
-
private _injector;
|
|
16
|
-
private _router;
|
|
17
|
-
private _promise;
|
|
18
|
-
get injector(): InjectorService;
|
|
19
|
-
get settings(): import("@tsed/di").DIConfiguration;
|
|
20
|
-
get promise(): Promise<any>;
|
|
21
|
-
static bootstrap(settings?: Partial<TsED.Configuration> & {
|
|
22
|
-
lambda?: Type[];
|
|
23
|
-
}): PlatformServerless;
|
|
24
|
-
/**
|
|
25
|
-
* Create a new handler from the given token and propertyKey. No routing is used here.
|
|
26
|
-
*/
|
|
27
|
-
static callback(token: Type<any>, propertyKey: string, settings?: Partial<TsED.Configuration>): Handler<ServerlessEvent> | RequestHandler;
|
|
28
|
-
handler(): Handler;
|
|
29
|
-
callbacks(tokens?: Type | Type[], callbacks?: any): Record<string, Handler>;
|
|
30
|
-
ready(): Promise<void>;
|
|
31
|
-
stop(): Promise<void>;
|
|
32
|
-
init(): Promise<any>;
|
|
33
|
-
protected callback(token: Type<any>, propertyKey: string): Handler<ServerlessEvent> | RequestHandler;
|
|
34
|
-
protected initRouter(): Promise<Instance<any>>;
|
|
35
|
-
protected createInjector(settings: any): this;
|
|
36
|
-
protected loadInjector(): Promise<void>;
|
|
37
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { InjectorService, TokenProvider } from "@tsed/di";
|
|
2
|
-
import type { PlatformExceptions } from "@tsed/platform-exceptions";
|
|
3
|
-
import { PlatformParams } from "@tsed/platform-params";
|
|
4
|
-
import { ServerlessContext } from "../domain/ServerlessContext.js";
|
|
5
|
-
import type { ServerlessEvent } from "../domain/ServerlessEvent";
|
|
6
|
-
export declare class PlatformServerlessHandler {
|
|
7
|
-
protected injector: InjectorService;
|
|
8
|
-
protected params: PlatformParams;
|
|
9
|
-
protected exceptionsManager: Promise<PlatformExceptions>;
|
|
10
|
-
createHandler(token: TokenProvider, propertyKey: string | symbol): ($ctx: ServerlessContext<ServerlessEvent>) => Promise<Promise<unknown>>;
|
|
11
|
-
private flush;
|
|
12
|
-
private makeHttpResponse;
|
|
13
|
-
private processResult;
|
|
14
|
-
}
|