@middy/core 5.0.2 → 5.0.3
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/index.js +7 -18
- package/package.json +2 -2
package/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { Readable } from 'node:stream';
|
|
2
2
|
import { pipeline } from 'node:stream/promises';
|
|
3
3
|
import { setTimeout } from 'node:timers/promises';
|
|
4
4
|
const defaultLambdaHandler = ()=>{};
|
|
@@ -13,10 +13,9 @@ const defaultPlugin = {
|
|
|
13
13
|
err.name = 'TimeoutError';
|
|
14
14
|
throw err;
|
|
15
15
|
},
|
|
16
|
-
streamifyResponse: false
|
|
16
|
+
streamifyResponse: false
|
|
17
17
|
};
|
|
18
18
|
const middy = (lambdaHandler = defaultLambdaHandler, plugin = {})=>{
|
|
19
|
-
// Allow base handler to be set using .handler()
|
|
20
19
|
if (typeof lambdaHandler !== 'function') {
|
|
21
20
|
plugin = lambdaHandler;
|
|
22
21
|
lambdaHandler = defaultLambdaHandler;
|
|
@@ -52,16 +51,15 @@ const middy = (lambdaHandler = defaultLambdaHandler, plugin = {})=>{
|
|
|
52
51
|
let handlerBody = handlerResponse;
|
|
53
52
|
if (handlerResponse.statusCode) {
|
|
54
53
|
handlerBody = handlerResponse.body ?? '';
|
|
54
|
+
delete handlerResponse.body;
|
|
55
55
|
responseStream = awslambda.HttpResponseStream.from(responseStream, handlerResponse);
|
|
56
56
|
}
|
|
57
|
-
// Source @datastream/core (MIT)
|
|
58
57
|
let handlerStream;
|
|
59
58
|
if (handlerBody._readableState) {
|
|
60
59
|
handlerStream = handlerBody;
|
|
61
60
|
} else if (typeof handlerBody === 'string') {
|
|
62
61
|
function* iterator(input) {
|
|
63
|
-
const size = 16384
|
|
64
|
-
;
|
|
62
|
+
const size = 16384;
|
|
65
63
|
let position = 0;
|
|
66
64
|
const length = input.length;
|
|
67
65
|
while(position < length){
|
|
@@ -93,7 +91,6 @@ const middy = (lambdaHandler = defaultLambdaHandler, plugin = {})=>{
|
|
|
93
91
|
}
|
|
94
92
|
return middy;
|
|
95
93
|
};
|
|
96
|
-
// Inline Middlewares
|
|
97
94
|
middy.before = (beforeMiddleware)=>{
|
|
98
95
|
beforeMiddlewares.push(beforeMiddleware);
|
|
99
96
|
return middy;
|
|
@@ -114,11 +111,9 @@ const middy = (lambdaHandler = defaultLambdaHandler, plugin = {})=>{
|
|
|
114
111
|
};
|
|
115
112
|
const runRequest = async (request, beforeMiddlewares, lambdaHandler, afterMiddlewares, onErrorMiddlewares, plugin)=>{
|
|
116
113
|
let timeoutAbort;
|
|
117
|
-
const timeoutEarly = plugin.timeoutEarly && request.context.getRemainingTimeInMillis
|
|
118
|
-
;
|
|
114
|
+
const timeoutEarly = plugin.timeoutEarly && request.context.getRemainingTimeInMillis;
|
|
119
115
|
try {
|
|
120
116
|
await runMiddlewares(request, beforeMiddlewares, plugin);
|
|
121
|
-
// Check if before stack hasn't exit early
|
|
122
117
|
if (typeof request.response === 'undefined') {
|
|
123
118
|
plugin.beforeHandler?.();
|
|
124
119
|
const handlerAbort = new AbortController();
|
|
@@ -134,26 +129,21 @@ const runRequest = async (request, beforeMiddlewares, lambdaHandler, afterMiddle
|
|
|
134
129
|
return plugin.timeoutEarlyResponse();
|
|
135
130
|
}) : Promise.race([])
|
|
136
131
|
]);
|
|
137
|
-
timeoutAbort?.abort()
|
|
138
|
-
;
|
|
132
|
+
timeoutAbort?.abort();
|
|
139
133
|
plugin.afterHandler?.();
|
|
140
134
|
await runMiddlewares(request, afterMiddlewares, plugin);
|
|
141
135
|
}
|
|
142
136
|
} catch (e) {
|
|
143
|
-
timeoutAbort?.abort()
|
|
144
|
-
;
|
|
145
|
-
// Reset response changes made by after stack before error thrown
|
|
137
|
+
timeoutAbort?.abort();
|
|
146
138
|
request.response = undefined;
|
|
147
139
|
request.error = e;
|
|
148
140
|
try {
|
|
149
141
|
await runMiddlewares(request, onErrorMiddlewares, plugin);
|
|
150
142
|
} catch (e) {
|
|
151
|
-
// Save error that wasn't handled
|
|
152
143
|
e.originalError = request.error;
|
|
153
144
|
request.error = e;
|
|
154
145
|
throw request.error;
|
|
155
146
|
}
|
|
156
|
-
// Catch if onError stack hasn't handled the error
|
|
157
147
|
if (typeof request.response === 'undefined') throw request.error;
|
|
158
148
|
} finally{
|
|
159
149
|
await plugin.requestEnd?.(request);
|
|
@@ -165,7 +155,6 @@ const runMiddlewares = async (request, middlewares, plugin)=>{
|
|
|
165
155
|
plugin.beforeMiddleware?.(nextMiddleware.name);
|
|
166
156
|
const res = await nextMiddleware(request);
|
|
167
157
|
plugin.afterMiddleware?.(nextMiddleware.name);
|
|
168
|
-
// short circuit chaining and respond early
|
|
169
158
|
if (typeof res !== 'undefined') {
|
|
170
159
|
request.response = res;
|
|
171
160
|
return;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@middy/core",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.3",
|
|
4
4
|
"description": "🛵 The stylish Node.js middleware engine for AWS Lambda (core package)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"@types/aws-lambda": "^8.10.76",
|
|
60
60
|
"@types/node": "^20.0.0"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "87660575a7ac2b52e4153c407a4c63c9449dcd0d",
|
|
63
63
|
"dependencies": {
|
|
64
64
|
"@datastream/core": "0.0.35"
|
|
65
65
|
}
|