Skip to content

Commit 1df6b38

Browse files
committed
fix(resolver): allow removing Content-Type header from Response
Fetch API doesn't allow to mutate Response or any associated objects like Headers. Removing the Content-Type header allows us to skip the JSON/YAML serialization. To skip the serialization we have clone the Response and Headers objects and remove the Content-Type header in clones. This doesn't apply to node-fetch@2 which API allows to mutate Response and all associated objects. Refs swagger-api/swagger-ui#8532
1 parent 47fe138 commit 1df6b38

File tree

1 file changed

+14
-2
lines changed
  • src/resolver/apidom/reference/resolve/resolvers/http-swagger-client

1 file changed

+14
-2
lines changed

src/resolver/apidom/reference/resolve/resolvers/http-swagger-client/index.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,20 @@ const HttpResolverSwaggerClient = HttpResolver.compose({
3434
url: file.uri,
3535
signal,
3636
userFetch: async (resource, options) => {
37-
const res = await fetch(resource, options);
38-
res.headers.delete('Content-Type');
37+
let res = await fetch(resource, options);
38+
39+
try {
40+
// node-fetch supports mutations
41+
res.headers.delete('Content-Type');
42+
} catch {
43+
// Fetch API has guards which prevent mutations
44+
res = new Response(res.body, {
45+
...res,
46+
headers: new Headers(res.headers),
47+
});
48+
res.headers.delete('Content-Type');
49+
}
50+
3951
return res;
4052
},
4153
credentials,

0 commit comments

Comments
 (0)