@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.
Files changed (2) hide show
  1. package/index.js +7 -18
  2. package/package.json +2 -2
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /* global awslambda */ import { Readable } from 'node:stream';
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 // Deprecate need for this when AWS provides a flag for when it's looking for it
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 // 16 * 1024 // Node.js default
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 // disable when AWS context missing (tests, containers)
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() // lambdaHandler may not be a promise
138
- ;
132
+ timeoutAbort?.abort();
139
133
  plugin.afterHandler?.();
140
134
  await runMiddlewares(request, afterMiddlewares, plugin);
141
135
  }
142
136
  } catch (e) {
143
- timeoutAbort?.abort() // timeout should be aborted on errors
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.2",
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": "6d17e155237022f2a0abd095ac7cd99ebfc7fc71",
62
+ "gitHead": "87660575a7ac2b52e4153c407a4c63c9449dcd0d",
63
63
  "dependencies": {
64
64
  "@datastream/core": "0.0.35"
65
65
  }