Source: remove-response-headers.js

/**
 * @copyright Copyright 2019 Kevin Locke <kevin@kevinlocke.name>
 * @license MIT
 * @module "openapi-transformers/remove-response-headers.js"
 */

import OpenApiTransformerBase from 'openapi-transformer-base';

/**
 * Transformer to remove headers from Response objects in an OpenAPI 3 doc.
 *
 * This can be useful because Autorest generates strongly typed classes for
 * each response type, which can be an annoyance (especially if the default
 * error response has headers), particularly since x-ms-headers is not working
 * correctly: https://github.com/Azure/autorest/pull/3322
 */
export default class RemoveResponseHeadersTransformer
  extends OpenApiTransformerBase {
  // eslint-disable-next-line class-methods-use-this
  transformResponse(response) {
    if (response.headers) {
      const newResponse = { ...response };
      delete newResponse.headers;
      return newResponse;
    }

    return response;
  }

  // Optimization: Only need to transform responses
  transformComponents(components) {
    if (components.responses) {
      return {
        ...components,
        responses:
          this.transformMap(components.responses, this.transformResponse),
      };
    }

    return components;
  }
}