@middy/ws-response 5.1.0 → 5.2.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.
Files changed (2) hide show
  1. package/index.js +62 -46
  2. package/package.json +6 -5
package/index.js CHANGED
@@ -1,50 +1,66 @@
1
- import { ApiGatewayManagementApiClient, PostToConnectionCommand } from '@aws-sdk/client-apigatewaymanagementapi';
2
- import { canPrefetch, createClient, createPrefetchClient } from '@middy/util';
1
+ import {
2
+ ApiGatewayManagementApiClient,
3
+ PostToConnectionCommand
4
+ } from '@aws-sdk/client-apigatewaymanagementapi'
5
+
6
+ import { canPrefetch, createClient, createPrefetchClient } from '@middy/util'
7
+
3
8
  const defaults = {
4
- AwsClient: ApiGatewayManagementApiClient,
5
- awsClientOptions: {},
6
- awsClientAssumeRole: undefined,
7
- awsClientCapture: undefined,
8
- disablePrefetch: false
9
- };
10
- const wsResponseMiddleware = (opts)=>{
11
- const options = {
12
- ...defaults,
13
- ...opts
14
- };
15
- let client;
16
- if (canPrefetch(options) && options.awsClientOptions.endpoint) {
17
- client = createPrefetchClient(options);
9
+ AwsClient: ApiGatewayManagementApiClient,
10
+ awsClientOptions: {}, // { endpoint }
11
+ awsClientAssumeRole: undefined,
12
+ awsClientCapture: undefined,
13
+ disablePrefetch: false
14
+ }
15
+
16
+ const wsResponseMiddleware = (opts) => {
17
+ const options = { ...defaults, ...opts }
18
+
19
+ let client
20
+ if (canPrefetch(options) && options.awsClientOptions.endpoint) {
21
+ client = createPrefetchClient(options)
22
+ }
23
+
24
+ const wsResponseMiddlewareAfter = async (request) => {
25
+ normalizeWsResponse(request)
26
+ const { response } = request
27
+
28
+ if (!response.ConnectionId) return
29
+
30
+ if (!options.awsClientOptions.endpoint && request.event.requestContext) {
31
+ options.awsClientOptions.endpoint =
32
+ request.event.requestContext.domainName +
33
+ '/' +
34
+ request.event.requestContext.stage
18
35
  }
19
- const wsResponseMiddlewareAfter = async (request)=>{
20
- normalizeWsResponse(request);
21
- const { response } = request;
22
- if (!response.ConnectionId) return;
23
- if (!options.awsClientOptions.endpoint && request.event.requestContext) {
24
- options.awsClientOptions.endpoint = request.event.requestContext.domainName + '/' + request.event.requestContext.stage;
25
- }
26
- if (!client) {
27
- client = await createClient(options, request);
28
- }
29
- await client.send(new PostToConnectionCommand(response));
30
- request.response.statusCode = 200;
31
- };
32
- return {
33
- after: wsResponseMiddlewareAfter
34
- };
35
- };
36
- const normalizeWsResponse = (request)=>{
37
- let { response } = request;
38
- if (typeof response === 'undefined') {
39
- response = {};
40
- } else if (typeof response?.Data === 'undefined' && typeof response?.ConnectionId === 'undefined') {
41
- response = {
42
- Data: response
43
- };
36
+ if (!client) {
37
+ client = await createClient(options, request)
44
38
  }
45
- response.ConnectionId ??= request.event.requestContext?.connectionId;
46
- request.response = response;
47
- return response;
48
- };
49
- export default wsResponseMiddleware;
50
39
 
40
+ await client.send(new PostToConnectionCommand(response))
41
+
42
+ request.response.statusCode = 200
43
+ }
44
+
45
+ return {
46
+ after: wsResponseMiddlewareAfter
47
+ }
48
+ }
49
+
50
+ // TODO move to @middy/util?
51
+ const normalizeWsResponse = (request) => {
52
+ let { response } = request
53
+ if (typeof response === 'undefined') {
54
+ response = {}
55
+ } else if (
56
+ typeof response?.Data === 'undefined' &&
57
+ typeof response?.ConnectionId === 'undefined'
58
+ ) {
59
+ response = { Data: response }
60
+ }
61
+ response.ConnectionId ??= request.event.requestContext?.connectionId
62
+ request.response = response
63
+ return response
64
+ }
65
+
66
+ export default wsResponseMiddleware
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@middy/ws-response",
3
- "version": "5.1.0",
3
+ "version": "5.2.0",
4
4
  "description": "WebSocket response handling middleware for the middy framework",
5
5
  "type": "module",
6
6
  "engines": {
@@ -26,7 +26,8 @@
26
26
  ],
27
27
  "scripts": {
28
28
  "test": "npm run test:unit",
29
- "test:unit": "ava"
29
+ "test:unit": "ava",
30
+ "test:benchmark": "node __benchmarks__/index.js"
30
31
  },
31
32
  "license": "MIT",
32
33
  "keywords": [
@@ -59,13 +60,13 @@
59
60
  "url": "https://github.com/sponsors/willfarrell"
60
61
  },
61
62
  "dependencies": {
62
- "@middy/util": "5.1.0"
63
+ "@middy/util": "5.2.0"
63
64
  },
64
65
  "devDependencies": {
65
66
  "@aws-sdk/client-apigatewaymanagementapi": "^3.0.0",
66
- "@middy/core": "5.1.0",
67
+ "@middy/core": "5.2.0",
67
68
  "@types/aws-lambda": "^8.10.97",
68
69
  "aws-xray-sdk": "^3.3.3"
69
70
  },
70
- "gitHead": "bbdaf5843914921804ba085dd58117273febe6b5"
71
+ "gitHead": "2d9096a49cd8fb62359517be96d6c93609df41f0"
71
72
  }