@middy/http-response-serializer 2.5.6 → 2.5.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/index.js +47 -39
- package/package.json +4 -4
package/index.js
CHANGED
|
@@ -1,66 +1,74 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const {
|
|
4
|
+
normalizeHttpResponse
|
|
5
|
+
} = require('@middy/util');
|
|
6
|
+
|
|
7
|
+
const Accept = require('@hapi/accept');
|
|
3
8
|
|
|
4
9
|
const defaults = {
|
|
5
10
|
serializers: [],
|
|
6
11
|
default: undefined
|
|
7
|
-
}
|
|
12
|
+
};
|
|
8
13
|
|
|
9
14
|
const httpResponseSerializerMiddleware = (opts = {}) => {
|
|
10
|
-
const options = { ...defaults,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
const options = { ...defaults,
|
|
16
|
+
...opts
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const httpResponseSerializerMiddlewareAfter = async request => {
|
|
20
|
+
var _request$event;
|
|
21
|
+
|
|
22
|
+
if (request.response === undefined) return;
|
|
23
|
+
request.response = normalizeHttpResponse(request.response); // skip serialization when content-type is already set
|
|
24
|
+
|
|
25
|
+
if (request.response.headers['Content-Type'] || request.response.headers['content-type']) {
|
|
26
|
+
return;
|
|
27
|
+
} // find accept value(s)
|
|
21
28
|
|
|
22
|
-
// find accept value(s)
|
|
23
|
-
let types
|
|
24
29
|
|
|
25
|
-
|
|
26
|
-
|
|
30
|
+
let types;
|
|
31
|
+
|
|
32
|
+
if ((_request$event = request.event) !== null && _request$event !== void 0 && _request$event.requiredContentType) {
|
|
33
|
+
types = [request.event.requiredContentType];
|
|
27
34
|
} else {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
request.event.preferredContentType,
|
|
33
|
-
options.default
|
|
34
|
-
]
|
|
35
|
+
var _request$event$header, _request$event2, _request$event2$heade, _request$event3, _request$event3$heade, _ref;
|
|
36
|
+
|
|
37
|
+
const acceptHeader = (_request$event$header = (_request$event2 = request.event) === null || _request$event2 === void 0 ? void 0 : (_request$event2$heade = _request$event2.headers) === null || _request$event2$heade === void 0 ? void 0 : _request$event2$heade.accept) !== null && _request$event$header !== void 0 ? _request$event$header : (_request$event3 = request.event) === null || _request$event3 === void 0 ? void 0 : (_request$event3$heade = _request$event3.headers) === null || _request$event3$heade === void 0 ? void 0 : _request$event3$heade.Accept;
|
|
38
|
+
types = [...((_ref = acceptHeader && Accept.mediaTypes(acceptHeader)) !== null && _ref !== void 0 ? _ref : []), request.event.preferredContentType, options.default];
|
|
35
39
|
}
|
|
36
40
|
|
|
37
41
|
for (const type of types) {
|
|
38
|
-
let breakTypes
|
|
42
|
+
let breakTypes;
|
|
43
|
+
|
|
39
44
|
for (const s of options.serializers) {
|
|
40
45
|
if (!s.regex.test(type)) {
|
|
41
|
-
continue
|
|
46
|
+
continue;
|
|
42
47
|
}
|
|
43
48
|
|
|
44
|
-
request.response.headers['Content-Type'] = type
|
|
45
|
-
const result = s.serializer(request.response)
|
|
49
|
+
request.response.headers['Content-Type'] = type;
|
|
50
|
+
const result = s.serializer(request.response);
|
|
51
|
+
|
|
46
52
|
if (typeof result === 'object' && 'body' in result) {
|
|
47
|
-
request.response = result
|
|
53
|
+
request.response = result;
|
|
48
54
|
} else {
|
|
49
55
|
// otherwise only replace the body attribute
|
|
50
|
-
request.response.body = result
|
|
56
|
+
request.response.body = result;
|
|
51
57
|
}
|
|
52
58
|
|
|
53
|
-
breakTypes = true
|
|
54
|
-
break
|
|
59
|
+
breakTypes = true;
|
|
60
|
+
break;
|
|
55
61
|
}
|
|
56
|
-
|
|
62
|
+
|
|
63
|
+
if (breakTypes) break;
|
|
57
64
|
}
|
|
58
|
-
}
|
|
59
|
-
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
const httpResponseSerializerMiddlewareOnError = httpResponseSerializerMiddlewareAfter;
|
|
60
68
|
return {
|
|
61
69
|
after: httpResponseSerializerMiddlewareAfter,
|
|
62
70
|
onError: httpResponseSerializerMiddlewareOnError
|
|
63
|
-
}
|
|
64
|
-
}
|
|
71
|
+
};
|
|
72
|
+
};
|
|
65
73
|
|
|
66
|
-
module.exports = httpResponseSerializerMiddleware
|
|
74
|
+
module.exports = httpResponseSerializerMiddleware;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@middy/http-response-serializer",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.7",
|
|
4
4
|
"description": "The Http Serializer middleware lets you define serialization mechanisms based on the current content negotiation.",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"engines": {
|
|
@@ -50,10 +50,10 @@
|
|
|
50
50
|
"homepage": "https://github.com/middyjs/middy#readme",
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@hapi/accept": "5.0.2",
|
|
53
|
-
"@middy/util": "^2.5.
|
|
53
|
+
"@middy/util": "^2.5.7"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
-
"@middy/core": "^2.5.
|
|
56
|
+
"@middy/core": "^2.5.7"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "3983c4b138e1a4d7fcb3ed805d3b8832fff06fc1"
|
|
59
59
|
}
|