@tsed/platform-serverless 7.77.0 → 7.78.0
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/jest.config.js +1 -1
- package/lib/cjs/builder/PlatformServerless.js +11 -2
- package/lib/cjs/builder/PlatformServerless.js.map +1 -1
- package/lib/cjs/builder/PlatformServerlessHandler.js +22 -6
- package/lib/cjs/builder/PlatformServerlessHandler.js.map +1 -1
- package/lib/cjs/domain/ServerlessContext.js +3 -1
- package/lib/cjs/domain/ServerlessContext.js.map +1 -1
- package/lib/cjs/domain/ServerlessResponse.js.map +1 -1
- package/lib/cjs/domain/ServerlessResponseStream.js +59 -0
- package/lib/cjs/domain/ServerlessResponseStream.js.map +1 -0
- package/lib/cjs/index.js +2 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/utils/isInAWS.js +12 -0
- package/lib/cjs/utils/isInAWS.js.map +1 -0
- package/lib/cjs/utils/setResponseHeaders.js +2 -2
- package/lib/cjs/utils/setResponseHeaders.js.map +1 -1
- package/lib/esm/builder/PlatformServerless.js +11 -2
- package/lib/esm/builder/PlatformServerless.js.map +1 -1
- package/lib/esm/builder/PlatformServerlessHandler.js +23 -7
- package/lib/esm/builder/PlatformServerlessHandler.js.map +1 -1
- package/lib/esm/domain/ServerlessContext.js +3 -1
- package/lib/esm/domain/ServerlessContext.js.map +1 -1
- package/lib/esm/domain/ServerlessResponse.js.map +1 -1
- package/lib/esm/domain/ServerlessResponseStream.js +55 -0
- package/lib/esm/domain/ServerlessResponseStream.js.map +1 -0
- package/lib/esm/index.js +2 -0
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/utils/isInAWS.js +8 -0
- package/lib/esm/utils/isInAWS.js.map +1 -0
- package/lib/esm/utils/setResponseHeaders.js +2 -2
- package/lib/esm/utils/setResponseHeaders.js.map +1 -1
- package/lib/types/builder/PlatformServerless.d.ts +3 -2
- package/lib/types/builder/PlatformServerlessHandler.d.ts +1 -1
- package/lib/types/domain/ServerlessContext.d.ts +4 -1
- package/lib/types/domain/ServerlessEvent.d.ts +2 -2
- package/lib/types/domain/ServerlessResponseStream.d.ts +26 -0
- package/lib/types/index.d.ts +2 -0
- package/lib/types/utils/isInAWS.d.ts +1 -0
- package/package.json +11 -11
package/jest.config.js
CHANGED
|
@@ -29,6 +29,7 @@ const di_1 = require("@tsed/di");
|
|
|
29
29
|
const logger_1 = require("@tsed/logger");
|
|
30
30
|
const schema_1 = require("@tsed/schema");
|
|
31
31
|
const ServerlessContext_js_1 = require("../domain/ServerlessContext.js");
|
|
32
|
+
const ServerlessResponseStream_1 = require("../domain/ServerlessResponseStream");
|
|
32
33
|
const getRequestId_js_1 = require("../utils/getRequestId.js");
|
|
33
34
|
const PlatformServerlessHandler_js_1 = require("./PlatformServerlessHandler.js");
|
|
34
35
|
/**
|
|
@@ -122,15 +123,16 @@ class PlatformServerless {
|
|
|
122
123
|
callback(token, propertyKey) {
|
|
123
124
|
const entity = schema_1.JsonEntityStore.fromMethod(token, propertyKey);
|
|
124
125
|
let handler;
|
|
125
|
-
|
|
126
|
+
const wrappedHandler = async (event, responseStream, context) => {
|
|
126
127
|
await this.init();
|
|
127
128
|
if (!handler) {
|
|
128
129
|
const platformHandler = this.injector.get(PlatformServerlessHandler_js_1.PlatformServerlessHandler);
|
|
129
|
-
handler =
|
|
130
|
+
handler = platformHandler.createHandler(token, propertyKey);
|
|
130
131
|
}
|
|
131
132
|
const $ctx = new ServerlessContext_js_1.ServerlessContext({
|
|
132
133
|
event,
|
|
133
134
|
context,
|
|
135
|
+
responseStream,
|
|
134
136
|
id: (0, getRequestId_js_1.getRequestId)(event, context),
|
|
135
137
|
logger: this.injector.logger,
|
|
136
138
|
injector: this.injector,
|
|
@@ -138,6 +140,13 @@ class PlatformServerless {
|
|
|
138
140
|
});
|
|
139
141
|
return handler($ctx);
|
|
140
142
|
};
|
|
143
|
+
const isBinary = entity.operation.response?.isBinary();
|
|
144
|
+
if (isBinary) {
|
|
145
|
+
return ServerlessResponseStream_1.ServerlessResponseStream.streamifyResponse(wrappedHandler);
|
|
146
|
+
}
|
|
147
|
+
return (event, context) => {
|
|
148
|
+
return wrappedHandler(event, undefined, context);
|
|
149
|
+
};
|
|
141
150
|
}
|
|
142
151
|
async initRouter() {
|
|
143
152
|
if (!this._router) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformServerless.js","sourceRoot":"","sources":["../../../src/builder/PlatformServerless.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAqC;AACrC,iCAAkF;AAClF,yCAA0C;AAC1C,yCAAkE;
|
|
1
|
+
{"version":3,"file":"PlatformServerless.js","sourceRoot":"","sources":["../../../src/builder/PlatformServerless.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ const core_1 = require("@tsed/core");
|
|
|
6
6
|
const di_1 = require("@tsed/di");
|
|
7
7
|
const json_mapper_1 = require("@tsed/json-mapper");
|
|
8
8
|
const platform_params_1 = require("@tsed/platform-params");
|
|
9
|
+
const promises_1 = require("node:stream/promises");
|
|
10
|
+
const ServerlessResponseStream_1 = require("../domain/ServerlessResponseStream");
|
|
9
11
|
const setResponseHeaders_js_1 = require("../utils/setResponseHeaders.js");
|
|
10
12
|
let PlatformServerlessHandler = class PlatformServerlessHandler {
|
|
11
13
|
injector;
|
|
@@ -32,8 +34,7 @@ let PlatformServerlessHandler = class PlatformServerlessHandler {
|
|
|
32
34
|
};
|
|
33
35
|
}
|
|
34
36
|
async flush($ctx) {
|
|
35
|
-
(
|
|
36
|
-
const body = $ctx.isHttpEvent() ? this.mapHttpResponse($ctx) : $ctx.response.getBody();
|
|
37
|
+
const body = $ctx.isHttpEvent() ? await this.makeHttpResponse($ctx) : $ctx.response.getBody();
|
|
37
38
|
await this.injector.emit("$onResponse", $ctx);
|
|
38
39
|
$ctx.logger.flush();
|
|
39
40
|
$ctx.destroy();
|
|
@@ -42,19 +43,34 @@ let PlatformServerlessHandler = class PlatformServerlessHandler {
|
|
|
42
43
|
}
|
|
43
44
|
return body;
|
|
44
45
|
}
|
|
45
|
-
|
|
46
|
+
async makeHttpResponse($ctx) {
|
|
47
|
+
(0, setResponseHeaders_js_1.setResponseHeaders)($ctx);
|
|
46
48
|
let body = $ctx.response.getBody();
|
|
47
49
|
if ((0, core_1.isSerializable)(body)) {
|
|
48
50
|
$ctx.response.set("content-type", "application/json");
|
|
49
51
|
body = JSON.stringify(body);
|
|
50
52
|
}
|
|
51
|
-
|
|
53
|
+
const meta = {
|
|
52
54
|
statusCode: $ctx.response.getStatus(),
|
|
53
|
-
body: body === undefined ? "" : body,
|
|
54
55
|
headers: {
|
|
55
56
|
...$ctx.response.getHeaders(),
|
|
56
57
|
"x-request-id": $ctx.id
|
|
57
|
-
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
if ((0, core_1.isStream)(body) && $ctx.responseStream) {
|
|
61
|
+
const resStream = ServerlessResponseStream_1.ServerlessResponseStream.setMeta($ctx.responseStream, {
|
|
62
|
+
...meta,
|
|
63
|
+
headers: {
|
|
64
|
+
"content-type": "application/octet-stream",
|
|
65
|
+
...meta.headers
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
await (0, promises_1.pipeline)(body, resStream);
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
...meta,
|
|
73
|
+
body: body === undefined ? "" : body,
|
|
58
74
|
isBase64Encoded: false
|
|
59
75
|
};
|
|
60
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformServerlessHandler.js","sourceRoot":"","sources":["../../../src/builder/PlatformServerlessHandler.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"PlatformServerlessHandler.js","sourceRoot":"","sources":["../../../src/builder/PlatformServerlessHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,14 +9,16 @@ class ServerlessContext extends di_1.DIContext {
|
|
|
9
9
|
request;
|
|
10
10
|
context;
|
|
11
11
|
event;
|
|
12
|
+
responseStream;
|
|
12
13
|
endpoint;
|
|
13
14
|
PLATFORM = "SERVERLESS";
|
|
14
|
-
constructor({ event, context, endpoint, ...options }) {
|
|
15
|
+
constructor({ event, context, endpoint, responseStream, ...options }) {
|
|
15
16
|
super({
|
|
16
17
|
...options,
|
|
17
18
|
maxStackSize: 0
|
|
18
19
|
});
|
|
19
20
|
this.context = context;
|
|
21
|
+
this.responseStream = responseStream;
|
|
20
22
|
this.event = {
|
|
21
23
|
...event,
|
|
22
24
|
headers: "headers" in event && event.headers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerlessContext.js","sourceRoot":"","sources":["../../../src/domain/ServerlessContext.ts"],"names":[],"mappings":";;;AAAA,iCAAqD;AAGrD,iEAAyD;AACzD,mEAA2D;
|
|
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;IAClF,QAAQ,CAA4B;IACpC,OAAO,CAA2B;IAClC,OAAO,CAAU;IACjB,KAAK,CAAQ;IACb,cAAc,CAAuC;IACrD,QAAQ,CAAkB;IAC1B,QAAQ,GAAG,YAAY,CAAC;IAEjC,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;QACH,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,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;AAxCD,8CAwCC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerlessResponse.js","sourceRoot":"","sources":["../../../src/domain/ServerlessResponse.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"ServerlessResponse.js","sourceRoot":"","sources":["../../../src/domain/ServerlessResponse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
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
|
+
_meta = { statusCode: 200, headers: {} };
|
|
8
|
+
#response;
|
|
9
|
+
constructor() {
|
|
10
|
+
super();
|
|
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(handler);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
return async (event, response, context) => {
|
|
29
|
+
const args = patchArgs([event, response, context]);
|
|
30
|
+
const responseStream = args[1];
|
|
31
|
+
await handler(...args);
|
|
32
|
+
return {
|
|
33
|
+
...responseStream._meta,
|
|
34
|
+
body: responseStream.getBufferedData().toString()
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// streams, `chunk` may be any JavaScript value.
|
|
40
|
+
_write(chunk, encoding, callback) {
|
|
41
|
+
this.#response.push(Buffer.from(chunk, encoding));
|
|
42
|
+
callback();
|
|
43
|
+
}
|
|
44
|
+
setMeta(meta) {
|
|
45
|
+
this._meta = meta;
|
|
46
|
+
}
|
|
47
|
+
getBufferedData() {
|
|
48
|
+
return Buffer.concat(this.#response);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.ServerlessResponseStream = ServerlessResponseStream;
|
|
52
|
+
function patchArgs(args) {
|
|
53
|
+
if (!(args[1] instanceof ServerlessResponseStream)) {
|
|
54
|
+
const responseStream = new ServerlessResponseStream();
|
|
55
|
+
return [args[0], responseStream, ...args.splice(1, -1)];
|
|
56
|
+
}
|
|
57
|
+
return args;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=ServerlessResponseStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerlessResponseStream.js","sourceRoot":"","sources":["../../../src/domain/ServerlessResponseStream.ts"],"names":[],"mappings":";;;AACA,6CAAmC;AACnC,8CAAyC;AAoBzC,MAAa,wBAAyB,SAAQ,oBAAM,CAAC,QAAQ;IACpD,KAAK,GAA2B,EAAC,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAC,CAAC;IACtE,SAAS,CAAW;IAEpB;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,SAAmC,EAAE,IAA4B;QAC9E,IAAI,IAAA,iBAAO,GAAE,EAAE;YACb,aAAa;YACb,OAAO,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SAC3D;QAED,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAExB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,OAAuB;QAC9C,6BAA6B;QAC7B,IAAI,IAAA,iBAAO,GAAE,EAAE;YACb,aAAa;YACb,OAAO,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;SAC7C;aAAM;YACL,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;gBACxC,MAAM,IAAI,GAAU,SAAS,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC1D,MAAM,cAAc,GAA6B,IAAI,CAAC,CAAC,CAAC,CAAC;gBAEzD,MAAO,OAAe,CAAC,GAAG,IAAI,CAAC,CAAC;gBAEhC,OAAO;oBACL,GAAG,cAAc,CAAC,KAAK;oBACvB,IAAI,EAAE,cAAc,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE;iBAClD,CAAC;YACJ,CAAC,CAAC;SACH;IACH,CAAC;IAED,gDAAgD;IAChD,MAAM,CAAC,KAAU,EAAE,QAAwB,EAAE,QAAwC;QACnF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAClD,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,OAAO,CAAC,IAA4B;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,eAAe;QACb,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;CACF;AArDD,4DAqDC;AAED,SAAS,SAAS,CAAC,IAAW;IAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,wBAAwB,CAAC,EAAE;QAClD,MAAM,cAAc,GAAG,IAAI,wBAAwB,EAAE,CAAC;QAEtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACzD;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/lib/cjs/index.js
CHANGED
|
@@ -10,7 +10,9 @@ tslib_1.__exportStar(require("./domain/ServerlessContext.js"), exports);
|
|
|
10
10
|
tslib_1.__exportStar(require("./domain/ServerlessEvent.js"), exports);
|
|
11
11
|
tslib_1.__exportStar(require("./domain/ServerlessRequest.js"), exports);
|
|
12
12
|
tslib_1.__exportStar(require("./domain/ServerlessResponse.js"), exports);
|
|
13
|
+
tslib_1.__exportStar(require("./domain/ServerlessResponseStream.js"), exports);
|
|
13
14
|
tslib_1.__exportStar(require("./exports.js"), exports);
|
|
14
15
|
tslib_1.__exportStar(require("./utils/getRequestId.js"), exports);
|
|
16
|
+
tslib_1.__exportStar(require("./utils/isInAWS.js"), exports);
|
|
15
17
|
tslib_1.__exportStar(require("./utils/setResponseHeaders.js"), exports);
|
|
16
18
|
//# sourceMappingURL=index.js.map
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,uDAA6B;AAC7B,kEAAwC;AACxC,wEAA8C"}
|
|
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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -19,10 +19,10 @@ function mergeHeaders(specHeaders, headers) {
|
|
|
19
19
|
*/
|
|
20
20
|
function setResponseHeaders(ctx) {
|
|
21
21
|
const { response, endpoint } = ctx;
|
|
22
|
-
const operation = endpoint.operation;
|
|
23
22
|
if (ctx.isDone()) {
|
|
24
23
|
return;
|
|
25
24
|
}
|
|
25
|
+
const operation = endpoint.operation;
|
|
26
26
|
if (!operation) {
|
|
27
27
|
ctx.logger.debug({
|
|
28
28
|
event: "MISSING_OPERATION_METADATA",
|
|
@@ -32,7 +32,7 @@ function setResponseHeaders(ctx) {
|
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
34
34
|
if (!response.hasStatus()) {
|
|
35
|
-
// apply status only if
|
|
35
|
+
// apply status only if isn't already modified
|
|
36
36
|
response.status(operation.getStatus());
|
|
37
37
|
}
|
|
38
38
|
const statusCode = response.statusCode;
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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"}
|
|
@@ -3,6 +3,7 @@ import { createContainer, InjectorService, setLoggerConfiguration } from "@tsed/
|
|
|
3
3
|
import { $log } from "@tsed/logger";
|
|
4
4
|
import { getOperationsRoutes, JsonEntityStore } from "@tsed/schema";
|
|
5
5
|
import { ServerlessContext } from "../domain/ServerlessContext.js";
|
|
6
|
+
import { ServerlessResponseStream } from "../domain/ServerlessResponseStream.js";
|
|
6
7
|
import { getRequestId } from "../utils/getRequestId.js";
|
|
7
8
|
import { PlatformServerlessHandler } from "./PlatformServerlessHandler.js";
|
|
8
9
|
/**
|
|
@@ -96,15 +97,16 @@ export class PlatformServerless {
|
|
|
96
97
|
callback(token, propertyKey) {
|
|
97
98
|
const entity = JsonEntityStore.fromMethod(token, propertyKey);
|
|
98
99
|
let handler;
|
|
99
|
-
|
|
100
|
+
const wrappedHandler = async (event, responseStream, context) => {
|
|
100
101
|
await this.init();
|
|
101
102
|
if (!handler) {
|
|
102
103
|
const platformHandler = this.injector.get(PlatformServerlessHandler);
|
|
103
|
-
handler =
|
|
104
|
+
handler = platformHandler.createHandler(token, propertyKey);
|
|
104
105
|
}
|
|
105
106
|
const $ctx = new ServerlessContext({
|
|
106
107
|
event,
|
|
107
108
|
context,
|
|
109
|
+
responseStream,
|
|
108
110
|
id: getRequestId(event, context),
|
|
109
111
|
logger: this.injector.logger,
|
|
110
112
|
injector: this.injector,
|
|
@@ -112,6 +114,13 @@ export class PlatformServerless {
|
|
|
112
114
|
});
|
|
113
115
|
return handler($ctx);
|
|
114
116
|
};
|
|
117
|
+
const isBinary = entity.operation.response?.isBinary();
|
|
118
|
+
if (isBinary) {
|
|
119
|
+
return ServerlessResponseStream.streamifyResponse(wrappedHandler);
|
|
120
|
+
}
|
|
121
|
+
return (event, context) => {
|
|
122
|
+
return wrappedHandler(event, undefined, context);
|
|
123
|
+
};
|
|
115
124
|
}
|
|
116
125
|
async initRouter() {
|
|
117
126
|
if (!this._router) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformServerless.js","sourceRoot":"","sources":["../../../src/builder/PlatformServerless.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAO,MAAM,YAAY,CAAC;AACrC,OAAO,EAAC,eAAe,EAAE,eAAe,EAAE,sBAAsB,EAAC,MAAM,UAAU,CAAC;AAClF,OAAO,EAAC,IAAI,EAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,mBAAmB,EAAE,eAAe,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"PlatformServerless.js","sourceRoot":"","sources":["../../../src/builder/PlatformServerless.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { AnyToPromise, isSerializable } from "@tsed/core";
|
|
2
|
+
import { AnyToPromise, isSerializable, isStream } from "@tsed/core";
|
|
3
3
|
import { Inject, Injectable, InjectorService, LazyInject, ProviderScope } from "@tsed/di";
|
|
4
4
|
import { serialize } from "@tsed/json-mapper";
|
|
5
5
|
import { DeserializerPipe, PlatformParams, ValidationPipe } from "@tsed/platform-params";
|
|
6
|
+
import { pipeline } from "node:stream/promises";
|
|
7
|
+
import { ServerlessResponseStream } from "../domain/ServerlessResponseStream.js";
|
|
6
8
|
import { setResponseHeaders } from "../utils/setResponseHeaders.js";
|
|
7
9
|
let PlatformServerlessHandler = class PlatformServerlessHandler {
|
|
8
10
|
injector;
|
|
@@ -29,8 +31,7 @@ let PlatformServerlessHandler = class PlatformServerlessHandler {
|
|
|
29
31
|
};
|
|
30
32
|
}
|
|
31
33
|
async flush($ctx) {
|
|
32
|
-
|
|
33
|
-
const body = $ctx.isHttpEvent() ? this.mapHttpResponse($ctx) : $ctx.response.getBody();
|
|
34
|
+
const body = $ctx.isHttpEvent() ? await this.makeHttpResponse($ctx) : $ctx.response.getBody();
|
|
34
35
|
await this.injector.emit("$onResponse", $ctx);
|
|
35
36
|
$ctx.logger.flush();
|
|
36
37
|
$ctx.destroy();
|
|
@@ -39,19 +40,34 @@ let PlatformServerlessHandler = class PlatformServerlessHandler {
|
|
|
39
40
|
}
|
|
40
41
|
return body;
|
|
41
42
|
}
|
|
42
|
-
|
|
43
|
+
async makeHttpResponse($ctx) {
|
|
44
|
+
setResponseHeaders($ctx);
|
|
43
45
|
let body = $ctx.response.getBody();
|
|
44
46
|
if (isSerializable(body)) {
|
|
45
47
|
$ctx.response.set("content-type", "application/json");
|
|
46
48
|
body = JSON.stringify(body);
|
|
47
49
|
}
|
|
48
|
-
|
|
50
|
+
const meta = {
|
|
49
51
|
statusCode: $ctx.response.getStatus(),
|
|
50
|
-
body: body === undefined ? "" : body,
|
|
51
52
|
headers: {
|
|
52
53
|
...$ctx.response.getHeaders(),
|
|
53
54
|
"x-request-id": $ctx.id
|
|
54
|
-
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
if (isStream(body) && $ctx.responseStream) {
|
|
58
|
+
const resStream = ServerlessResponseStream.setMeta($ctx.responseStream, {
|
|
59
|
+
...meta,
|
|
60
|
+
headers: {
|
|
61
|
+
"content-type": "application/octet-stream",
|
|
62
|
+
...meta.headers
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
await pipeline(body, resStream);
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
...meta,
|
|
70
|
+
body: body === undefined ? "" : body,
|
|
55
71
|
isBase64Encoded: false
|
|
56
72
|
};
|
|
57
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformServerlessHandler.js","sourceRoot":"","sources":["../../../src/builder/PlatformServerlessHandler.ts"],"names":[],"mappings":";AAAA,OAAO,EAAmB,YAAY,EAAE,cAAc,EAAC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"PlatformServerlessHandler.js","sourceRoot":"","sources":["../../../src/builder/PlatformServerlessHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,14 +6,16 @@ export class ServerlessContext extends DIContext {
|
|
|
6
6
|
request;
|
|
7
7
|
context;
|
|
8
8
|
event;
|
|
9
|
+
responseStream;
|
|
9
10
|
endpoint;
|
|
10
11
|
PLATFORM = "SERVERLESS";
|
|
11
|
-
constructor({ event, context, endpoint, ...options }) {
|
|
12
|
+
constructor({ event, context, endpoint, responseStream, ...options }) {
|
|
12
13
|
super({
|
|
13
14
|
...options,
|
|
14
15
|
maxStackSize: 0
|
|
15
16
|
});
|
|
16
17
|
this.context = context;
|
|
18
|
+
this.responseStream = responseStream;
|
|
17
19
|
this.event = {
|
|
18
20
|
...event,
|
|
19
21
|
headers: "headers" in event && event.headers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerlessContext.js","sourceRoot":"","sources":["../../../src/domain/ServerlessContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAmB,MAAM,UAAU,CAAC;AAGrD,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"ServerlessContext.js","sourceRoot":"","sources":["../../../src/domain/ServerlessContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAmB,MAAM,UAAU,CAAC;AAGrD,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAU3D,MAAM,OAAO,iBAA+D,SAAQ,SAAS;IAClF,QAAQ,CAA4B;IACpC,OAAO,CAA2B;IAClC,OAAO,CAAU;IACjB,KAAK,CAAQ;IACb,cAAc,CAAuC;IACrD,QAAQ,CAAkB;IAC1B,QAAQ,GAAG,YAAY,CAAC;IAEjC,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;QACH,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,iBAAiB,CAAQ,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,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,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerlessResponse.js","sourceRoot":"","sources":["../../../src/domain/ServerlessResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"ServerlessResponse.js","sourceRoot":"","sources":["../../../src/domain/ServerlessResponse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Stream } from "node:stream";
|
|
2
|
+
import { isInAWS } from "../utils/isInAWS.js";
|
|
3
|
+
export class ServerlessResponseStream extends Stream.Writable {
|
|
4
|
+
_meta = { statusCode: 200, headers: {} };
|
|
5
|
+
#response;
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
this.#response = [];
|
|
9
|
+
}
|
|
10
|
+
static setMeta(resStream, meta) {
|
|
11
|
+
if (isInAWS()) {
|
|
12
|
+
// @ts-ignore
|
|
13
|
+
return awslambda.HttpResponseStream.from(resStream, meta);
|
|
14
|
+
}
|
|
15
|
+
resStream.setMeta(meta);
|
|
16
|
+
return resStream;
|
|
17
|
+
}
|
|
18
|
+
static streamifyResponse(handler) {
|
|
19
|
+
// Check for global awslambda
|
|
20
|
+
if (isInAWS()) {
|
|
21
|
+
// @ts-ignore
|
|
22
|
+
return awslambda.streamifyResponse(handler);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return async (event, response, context) => {
|
|
26
|
+
const args = patchArgs([event, response, context]);
|
|
27
|
+
const responseStream = args[1];
|
|
28
|
+
await handler(...args);
|
|
29
|
+
return {
|
|
30
|
+
...responseStream._meta,
|
|
31
|
+
body: responseStream.getBufferedData().toString()
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// streams, `chunk` may be any JavaScript value.
|
|
37
|
+
_write(chunk, encoding, callback) {
|
|
38
|
+
this.#response.push(Buffer.from(chunk, encoding));
|
|
39
|
+
callback();
|
|
40
|
+
}
|
|
41
|
+
setMeta(meta) {
|
|
42
|
+
this._meta = meta;
|
|
43
|
+
}
|
|
44
|
+
getBufferedData() {
|
|
45
|
+
return Buffer.concat(this.#response);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function patchArgs(args) {
|
|
49
|
+
if (!(args[1] instanceof ServerlessResponseStream)) {
|
|
50
|
+
const responseStream = new ServerlessResponseStream();
|
|
51
|
+
return [args[0], responseStream, ...args.splice(1, -1)];
|
|
52
|
+
}
|
|
53
|
+
return args;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=ServerlessResponseStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerlessResponseStream.js","sourceRoot":"","sources":["../../../src/domain/ServerlessResponseStream.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAoBzC,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,QAAQ;IACpD,KAAK,GAA2B,EAAC,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAC,CAAC;IACtE,SAAS,CAAW;IAEpB;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,SAAmC,EAAE,IAA4B;QAC9E,IAAI,OAAO,EAAE,EAAE;YACb,aAAa;YACb,OAAO,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SAC3D;QAED,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAExB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,OAAuB;QAC9C,6BAA6B;QAC7B,IAAI,OAAO,EAAE,EAAE;YACb,aAAa;YACb,OAAO,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;SAC7C;aAAM;YACL,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;gBACxC,MAAM,IAAI,GAAU,SAAS,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC1D,MAAM,cAAc,GAA6B,IAAI,CAAC,CAAC,CAAC,CAAC;gBAEzD,MAAO,OAAe,CAAC,GAAG,IAAI,CAAC,CAAC;gBAEhC,OAAO;oBACL,GAAG,cAAc,CAAC,KAAK;oBACvB,IAAI,EAAE,cAAc,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE;iBAClD,CAAC;YACJ,CAAC,CAAC;SACH;IACH,CAAC;IAED,gDAAgD;IAChD,MAAM,CAAC,KAAU,EAAE,QAAwB,EAAE,QAAwC;QACnF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAClD,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,OAAO,CAAC,IAA4B;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,eAAe;QACb,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;CACF;AAED,SAAS,SAAS,CAAC,IAAW;IAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,wBAAwB,CAAC,EAAE;QAClD,MAAM,cAAc,GAAG,IAAI,wBAAwB,EAAE,CAAC;QAEtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACzD;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/lib/esm/index.js
CHANGED
|
@@ -7,7 +7,9 @@ export * from "./domain/ServerlessContext.js";
|
|
|
7
7
|
export * from "./domain/ServerlessEvent.js";
|
|
8
8
|
export * from "./domain/ServerlessRequest.js";
|
|
9
9
|
export * from "./domain/ServerlessResponse.js";
|
|
10
|
+
export * from "./domain/ServerlessResponseStream.js";
|
|
10
11
|
export * from "./exports.js";
|
|
11
12
|
export * from "./utils/getRequestId.js";
|
|
13
|
+
export * from "./utils/isInAWS.js";
|
|
12
14
|
export * from "./utils/setResponseHeaders.js";
|
|
13
15
|
//# sourceMappingURL=index.js.map
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,iCAAiC,CAAC;AAChD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,iCAAiC,CAAC;AAChD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isInAWS.js","sourceRoot":"","sources":["../../../src/utils/isInAWS.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO;IACrB,OAAO;IACL,aAAa;IACb,UAAU,CAAC,SAAS,KAAK,SAAS;QAClC,aAAa;QACb,SAAS,CAAC,iBAAiB,KAAK,SAAS,CAC1C,CAAC;AACJ,CAAC"}
|
|
@@ -16,10 +16,10 @@ function mergeHeaders(specHeaders, headers) {
|
|
|
16
16
|
*/
|
|
17
17
|
export function setResponseHeaders(ctx) {
|
|
18
18
|
const { response, endpoint } = ctx;
|
|
19
|
-
const operation = endpoint.operation;
|
|
20
19
|
if (ctx.isDone()) {
|
|
21
20
|
return;
|
|
22
21
|
}
|
|
22
|
+
const operation = endpoint.operation;
|
|
23
23
|
if (!operation) {
|
|
24
24
|
ctx.logger.debug({
|
|
25
25
|
event: "MISSING_OPERATION_METADATA",
|
|
@@ -29,7 +29,7 @@ export function setResponseHeaders(ctx) {
|
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
31
|
if (!response.hasStatus()) {
|
|
32
|
-
// apply status only if
|
|
32
|
+
// apply status only if isn't already modified
|
|
33
33
|
response.status(operation.getStatus());
|
|
34
34
|
}
|
|
35
35
|
const statusCode = response.statusCode;
|
|
@@ -1 +1 @@
|
|
|
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,MAAM,UAAU,kBAAkB,CAAC,GAAuC;IACxE,MAAM,EAAC,QAAQ,EAAE,QAAQ,EAAC,GAAG,GAAG,CAAC;IACjC,
|
|
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,MAAM,UAAU,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"}
|
|
@@ -3,6 +3,7 @@ import { InjectorService } from "@tsed/di";
|
|
|
3
3
|
import type { Handler } from "aws-lambda";
|
|
4
4
|
import type { Instance } from "find-my-way";
|
|
5
5
|
import type { ServerlessEvent } from "../domain/ServerlessEvent";
|
|
6
|
+
import { type RequestHandler } from "../domain/ServerlessResponseStream";
|
|
6
7
|
export interface PlatformServerlessSettings extends Partial<TsED.Configuration> {
|
|
7
8
|
lambda?: Type[];
|
|
8
9
|
}
|
|
@@ -23,13 +24,13 @@ export declare class PlatformServerless {
|
|
|
23
24
|
/**
|
|
24
25
|
* Create a new handler from the given token and propertyKey. No routing is used here.
|
|
25
26
|
*/
|
|
26
|
-
static callback(token: Type<any>, propertyKey: string, settings?: Partial<TsED.Configuration>): Handler;
|
|
27
|
+
static callback(token: Type<any>, propertyKey: string, settings?: Partial<TsED.Configuration>): Handler<ServerlessEvent> | RequestHandler;
|
|
27
28
|
handler(): Handler;
|
|
28
29
|
callbacks(tokens?: Type | Type[], callbacks?: any): Record<string, Handler>;
|
|
29
30
|
ready(): Promise<void>;
|
|
30
31
|
stop(): Promise<void>;
|
|
31
32
|
init(): Promise<any>;
|
|
32
|
-
protected callback(token: Type<any>, propertyKey: string): Handler<ServerlessEvent
|
|
33
|
+
protected callback(token: Type<any>, propertyKey: string): Handler<ServerlessEvent> | RequestHandler;
|
|
33
34
|
protected initRouter(): Promise<Instance<any>>;
|
|
34
35
|
protected createInjector(settings: any): this;
|
|
35
36
|
protected loadInjector(): Promise<void>;
|
|
@@ -9,6 +9,6 @@ export declare class PlatformServerlessHandler {
|
|
|
9
9
|
protected exceptionsManager: Promise<PlatformExceptions>;
|
|
10
10
|
createHandler(token: TokenProvider, propertyKey: string | symbol): ($ctx: ServerlessContext<ServerlessEvent>) => Promise<any>;
|
|
11
11
|
private flush;
|
|
12
|
-
private
|
|
12
|
+
private makeHttpResponse;
|
|
13
13
|
private processResult;
|
|
14
14
|
}
|
|
@@ -3,9 +3,11 @@ import { JsonEntityStore } from "@tsed/schema";
|
|
|
3
3
|
import { type APIGatewayProxyEvent, Context } from "aws-lambda";
|
|
4
4
|
import { ServerlessRequest } from "./ServerlessRequest.js";
|
|
5
5
|
import { ServerlessResponse } from "./ServerlessResponse.js";
|
|
6
|
+
import type { ServerlessResponseStream } from "./ServerlessResponseStream";
|
|
6
7
|
export interface ServerlessContextOptions<Event = APIGatewayProxyEvent> extends DIContextOptions {
|
|
7
8
|
event: Event;
|
|
8
9
|
context: Context;
|
|
10
|
+
responseStream?: ServerlessResponseStream;
|
|
9
11
|
endpoint: JsonEntityStore;
|
|
10
12
|
}
|
|
11
13
|
export declare class ServerlessContext<Event extends object = APIGatewayProxyEvent> extends DIContext {
|
|
@@ -13,9 +15,10 @@ export declare class ServerlessContext<Event extends object = APIGatewayProxyEve
|
|
|
13
15
|
readonly request: ServerlessRequest<Event>;
|
|
14
16
|
readonly context: Context;
|
|
15
17
|
readonly event: Event;
|
|
18
|
+
readonly responseStream: ServerlessResponseStream | undefined;
|
|
16
19
|
readonly endpoint: JsonEntityStore;
|
|
17
20
|
readonly PLATFORM = "SERVERLESS";
|
|
18
|
-
constructor({ event, context, endpoint, ...options }: ServerlessContextOptions<Event>);
|
|
21
|
+
constructor({ event, context, endpoint, responseStream, ...options }: ServerlessContextOptions<Event>);
|
|
19
22
|
isHttpEvent(): boolean;
|
|
20
23
|
destroy(): Promise<void>;
|
|
21
24
|
isDone(): boolean;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { APIGatewayProxyEvent, APIGatewayTokenAuthorizerEvent, CloudWatchLogsEvent, DynamoDBStreamEvent, KinesisStreamEvent, S3Event, ScheduledEvent, SNSEvent, SQSEvent } from "aws-lambda";
|
|
2
|
-
export type ServerlessEvent = APIGatewayProxyEvent | S3Event | SQSEvent | SNSEvent | DynamoDBStreamEvent | KinesisStreamEvent | CloudWatchLogsEvent | ScheduledEvent | APIGatewayTokenAuthorizerEvent;
|
|
1
|
+
import type { APIGatewayProxyEvent, APIGatewayProxyEventV2, APIGatewayTokenAuthorizerEvent, CloudWatchLogsEvent, DynamoDBStreamEvent, KinesisStreamEvent, S3Event, ScheduledEvent, SNSEvent, SQSEvent } from "aws-lambda";
|
|
2
|
+
export type ServerlessEvent = APIGatewayProxyEvent | APIGatewayProxyEventV2 | S3Event | SQSEvent | SNSEvent | DynamoDBStreamEvent | KinesisStreamEvent | CloudWatchLogsEvent | ScheduledEvent | APIGatewayTokenAuthorizerEvent;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { APIGatewayProxyEventV2, Callback, Context, Handler } from "aws-lambda";
|
|
3
|
+
import { Stream } from "node:stream";
|
|
4
|
+
export type ServerlessResponseMeta = {
|
|
5
|
+
statusCode: number;
|
|
6
|
+
headers: Record<string, string>;
|
|
7
|
+
};
|
|
8
|
+
declare global {
|
|
9
|
+
const awsLambda: {
|
|
10
|
+
streamifyResponse(handler: Handler): unknown | Promise<unknown>;
|
|
11
|
+
HttpResponseStream: {
|
|
12
|
+
from(resStream: ServerlessResponseStream | unknown, meta: ServerlessResponseMeta): ServerlessResponseStream;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export type RequestHandler = (ev: APIGatewayProxyEventV2, streamResponse: ServerlessResponseStream, ctx?: Context, callback?: Callback) => unknown | Promise<unknown>;
|
|
17
|
+
export declare class ServerlessResponseStream extends Stream.Writable {
|
|
18
|
+
#private;
|
|
19
|
+
_meta: ServerlessResponseMeta;
|
|
20
|
+
constructor();
|
|
21
|
+
static setMeta(resStream: ServerlessResponseStream, meta: ServerlessResponseMeta): any;
|
|
22
|
+
static streamifyResponse(handler: RequestHandler): RequestHandler;
|
|
23
|
+
_write(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
|
|
24
|
+
setMeta(meta: ServerlessResponseMeta): void;
|
|
25
|
+
getBufferedData(): Buffer;
|
|
26
|
+
}
|
package/lib/types/index.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export * from "./domain/ServerlessContext.js";
|
|
|
7
7
|
export * from "./domain/ServerlessEvent.js";
|
|
8
8
|
export * from "./domain/ServerlessRequest.js";
|
|
9
9
|
export * from "./domain/ServerlessResponse.js";
|
|
10
|
+
export * from "./domain/ServerlessResponseStream.js";
|
|
10
11
|
export * from "./exports.js";
|
|
11
12
|
export * from "./utils/getRequestId.js";
|
|
13
|
+
export * from "./utils/isInAWS.js";
|
|
12
14
|
export * from "./utils/setResponseHeaders.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isInAWS(): boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsed/platform-serverless",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.78.0",
|
|
4
4
|
"description": "Platform serverless module for Ts.ED Framework",
|
|
5
5
|
"source": "./src/index.ts",
|
|
6
6
|
"main": "./lib/cjs/index.js",
|
|
@@ -19,21 +19,21 @@
|
|
|
19
19
|
"build:ts": "tsc --build tsconfig.json && tsc --build tsconfig.esm.json"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@tsed/core": "7.
|
|
23
|
-
"@tsed/exceptions": "7.
|
|
24
|
-
"@tsed/json-mapper": "7.
|
|
25
|
-
"@tsed/platform-exceptions": "7.
|
|
26
|
-
"@tsed/platform-params": "7.
|
|
27
|
-
"@tsed/schema": "7.
|
|
22
|
+
"@tsed/core": "7.78.0",
|
|
23
|
+
"@tsed/exceptions": "7.78.0",
|
|
24
|
+
"@tsed/json-mapper": "7.78.0",
|
|
25
|
+
"@tsed/platform-exceptions": "7.78.0",
|
|
26
|
+
"@tsed/platform-params": "7.78.0",
|
|
27
|
+
"@tsed/schema": "7.78.0",
|
|
28
28
|
"encodeurl": "^2.0.0",
|
|
29
29
|
"mime": "^3.0.0",
|
|
30
30
|
"tslib": "2.6.1",
|
|
31
31
|
"uuid": "^9.0.1"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@tsed/barrels": "7.
|
|
35
|
-
"@tsed/platform-serverless-testing": "7.
|
|
36
|
-
"@tsed/typescript": "7.
|
|
34
|
+
"@tsed/barrels": "7.78.0",
|
|
35
|
+
"@tsed/platform-serverless-testing": "7.78.0",
|
|
36
|
+
"@tsed/typescript": "7.78.0",
|
|
37
37
|
"@types/aws-lambda": "^8.10.136",
|
|
38
38
|
"@types/encodeurl": "^1.0.2",
|
|
39
39
|
"@types/mime": "^3.0.4",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"jest": "^29.7.0"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
|
-
"@tsed/di": "7.
|
|
45
|
+
"@tsed/di": "7.78.0",
|
|
46
46
|
"@tsed/logger": ">=6.7.5",
|
|
47
47
|
"find-my-way": ">=7.0.0"
|
|
48
48
|
},
|